ال forms.ModelForm هو نموذج يتم إنشاؤه تلقائيًا بناءً على model معين مثلا دعنا نقول أن لديك نموذج مقال يشبه هذا
class Article(models.Model):
DRAFT = 'D'
PUBLISHED = 'P'
STATUS = (
(DRAFT, 'Draft'),
(PUBLISHED, 'Published'),
)
title = models.CharField(max_length=255)
content = models.TextField(max_length=4000)
status = models.CharField(max_length=1, choices=STATUS, default=DRAFT)
create_date = models.DateTimeField(auto_now_add=True)
update_date = models.DateTimeField(blank=True, null=True)
في ملف Forms.py الخاص بك ، يمكنك إنشاء نماذجك تلقائيًا مثل ذلك
from django import forms
from . import models
class ArticleForm(forms.ModelForm):
class Meta:
model = models.Article
fields = ['title', 'content', 'status']
يجب أن يحتوي modelForm على modelللعمل منه ، في المثال أعلاه يمكنك رؤية هذا السطر
"model = Models.Article" # هنا نحدد النموذج الذي سيعتمد عليه هذا النموذج
اما النوع الثاني forms.Form هي أشكال مستقلة عن model ولا تتفاعل بشكل مباشر معه و هذا مثال form للبحث
from django import forms
class SearchForm(forms.Form):
search_term = forms.CharField(required=False, max_length=50)
كما ترى ، فإن نموذج البحث أعلاه ليس مرتبطًا بنموذج معين ، فهو مستقل وهدفه الوحيد هو إنشاء حقول أو حقل إذا كان لديك حقل واحد فقط مثل نموذج البحث أعلاه والذي سيتم تقديمه للمستخدم النهائي.
يتمثل الاختلاف الرئيسي بين الاثنين في أنه في النماذج التي يتم إنشاؤها من النماذج ، يجب علينا تحديد النموذج الذي سيتم استخدامه لإنشاء النموذج الخاص بنا.