Django Academy · درس

تعريف ModelForm و Meta.fields

ربط نموذج بنموذج بيانات في بضعة أسطر

الدرس 1 من 413 خطوة

تعريف ModelForm و Meta.fields درس مجاني في Django Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Django Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Django Academy 4 دروس في المجموع.

سبب وجود ModelForm

لديك بالفعل نموذج يصف بياناتك. ينشئ ModelForm نموذجًا مباشرةً من ذلك النموذج، فلا تكرر الحقول نفسها مرتين.

استيراد ModelForm

توجد ModelForms في المكان نفسه الذي توجد فيه النماذج العادية. أنشئ فئة فرعية من forms.ModelForm بدلًا من forms.Form للحصول على الإصدار المدرك للنموذج.

from django import forms
from .models import Post

فئة Meta

يحتاج ModelForm إلى فئة داخلية باسم Meta. وفي Meta تحدد للنموذج النموذجَ الذي بُني منه والحقول التي ينبغي تضمينها.

class PostForm(forms.ModelForm):
    class Meta:
        model = Post
        fields = ["title", "body"]

الإشارة إلى نموذج

تحدد السمة model الفئة التي يحاكيها نموذجك. يقرأ Django حقول ذلك النموذج ليقرر مدخلات النموذج التي سينشئها لك.

class Meta:
    model = Post

إدراج الحقول صراحةً

تتحكم قائمة fields بدقة في حقول النموذج التي ستصبح مدخلات. وتسمية الحقول تجعل النموذج مقصودًا وآمنًا من المفاجآت.

fields = ["title", "body", "published"]

الاختصار: fields = all

يؤدي ضبط fields على السلسلة النصية "__all__" إلى تضمين كل حقول النموذج. وهذا مفيد في العروض التوضيحية، لكنه محفوف بالمخاطر لأن حقول النموذج الجديدة ستظهر تلقائيًا.

class Meta:
    model = Post
    fields = "__all__"

الاستبعاد بدلًا من ذلك

يمكنك عكس ذلك باستخدام exclude للاحتفاظ بكل شيء باستثناء بضعة حقول. وعندما يكون ذلك ممكنًا، ففضّل قائمة fields صريحة من أجل الوضوح.

class Meta:
    model = Post
    exclude = ["author"]

عناصر التحكم المُنشأة تلقائيًا

يختار Django تلقائيًا widget مناسبًا لكل حقل. فيتحول CharField إلى مربع نص، ويتحول BooleanField إلى مربع اختيار من دون عمل إضافي.

التحقق مضمّن

تنتقل قواعد نموذجك معه أيضًا. فالحقل المحدد على أنه مطلوب أو ذو طول أقصى يجلب التحقق نفسه إلى النموذج مجانًا.

استخدامه في عرض

في العرض، تنشئ النموذج بالطريقة نفسها التي تنشئ بها أي نموذج. يعرض PostForm() الفارغ مدخلات فارغة جاهزة لملئها من قبل المستخدم.

def create(request):
    form = PostForm()
    return render(request, "create.html", {"form": form})

ربطه بمثيل

مرّر كائنًا موجودًا باستخدام instance، فيملأ النموذج قيمه مسبقًا. وهكذا يدعم ModelForm نفسه كلاً من الإنشاء والتعديل.

form = PostForm(instance=post)

تحقق سريع

أين تحدد لـ ModelForm النموذج والحقول اللذين سيستخدمهما؟

مراجعة: أساسيات ModelForm

أحسنت! ينشئ ModelForm نموذجًا من نموذج باستخدام فئة Meta داخلية تتضمن model وfields. وهكذا تتجنب التكرار وترث التحقق مجانًا. ✨

البدء مجانًا

تعلم Python مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
30
الدروس
120

الأسئلة الشائعة

هل درس «تعريف ModelForm و Meta.fields» مجاني؟

نعم — نص درس «تعريف ModelForm و Meta.fields» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Django Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Django Academy 4 دروس في المجموع.

ماذا ستتعلم في «تعريف ModelForm و Meta.fields»؟

ربط نموذج بنموذج بيانات في بضعة أسطر تتمرن على Django Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Django Academy؟

لا تُشترط خبرة سابقة. Django Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «تعريف ModelForm و Meta.fields»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Django Academy هذا؟

نعم. كل درس في Django Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. تعريف ModelForm و Meta.fields
  2. form.save() و commit=False
  3. التحقق المخصص باستخدام أساليب clean
  4. Widgets والعناوين ونصوص المساعدة
← العودة إلى Django Academy