اذهب إلى المحتوى

السؤال

نشر

لدي حقل DateTimeField في نموذج Model خاص بي. وأريد عرضه في الموقع كمربع الاختيار checkbox في Django Admin. للقيام بذلك، قمت بإنشاء custom widget. ولكن لا أعرف كيفية استخدامه مع هذا الحقل فقط.

في توثيق جانغو Django وجدت أنه تم شرح أمر مشابه:

# مثال من توثيق جانغو الرسمي
class MyModelAdmin(admin.ModelAdmin):
    formfield_overrides = {
        models.TextField: {'widget': RichTextEditorWidget},
    }

لكن هذه الطريقة تقوم بعمل custom widget لكل الحقول في النموذج.

كيف أقوم بإستخدام custom widget لحقل واحد فقط في جانغو Django؟

Recommended Posts

  • 1
نشر (معدل)

حسناً سنقوم بتحويل DateTimeField الى checkbox  في لوحة التحكم Django Admin كما طلبت اولاً قم بإنشاء ModelForm في ملف admin.py الذي يوجد به الModelAdmin الخاص بك وسوف نقوم بوصف التعديل على حقل ال DateTimeField في داخل الclass Meta التابع الى ال ModelForm سوف نقوم بإضافة  widgets CheckboxInput ونقوم بإعطائه اسم الحقل الذي نريد تعديله الى checkbox  وذلك على النحو التالي :

# in admin.py file
from .models import MyModel
from django import forms
from django.contrib import admin
from django.forms import CheckboxInput

class MyModelForm(forms.ModelForm):
    class Meta:
        model = MyModel
        widgets = {
            'field_name': CheckboxInput,
        }
        fields = '__all__'

الأن سوف نُخبر Django Admin بهذا التعديل سنقوم بكتابة الModelAdmin تحت الكود السابق بالشكل التالي:

# in admin.py file
from .models import MyModel
from django import forms
from django.contrib import admin
from django.forms import CheckboxInput

class MyModelForm(forms.ModelForm):
    class Meta:
        model = MyModel
        widgets = {
            'field_name': CheckboxInput,
        }
        fields = '__all__'

class MyModelAdmin(admin.ModelAdmin):
    form = MyModelForm # Django Admin إنشاء الفورم الى 


admin.site.register(MyModel, MyModelAdmin) # Django Admin في MyModel تسجيل الفورم الى

مثال بصري للنتيجة :

قبل

لقطة الشاشة 2022-06-29 230728.jpg

بعد التعديل 

لقطة الشاشة 2022-06-29 230805.jpg

تم التعديل في بواسطة Haroun Taha

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...