Mohssen A Mohssen نشر 23 فبراير 2022 أرسل تقرير نشر 23 فبراير 2022 كنت من فترة أقرأ في توثيق جانغو Django ، ووجدت أن هناك نوعين من الإستمارات Forms، النوع الأول هو forms.Form والآخر forms.ModelForm لكن لم أفهم ما الفرق بين النوعين، هل يمكن لأي شخص أن يشرح لي أوجه التشابه والاختلاف بين هذين النوعين؟ ومتى أستعمل كل نوع منهما؟ اقتباس
1 Abdollahi Mohammed نشر 23 فبراير 2022 أرسل تقرير نشر 23 فبراير 2022 ال 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) كما ترى ، فإن نموذج البحث أعلاه ليس مرتبطًا بنموذج معين ، فهو مستقل وهدفه الوحيد هو إنشاء حقول أو حقل إذا كان لديك حقل واحد فقط مثل نموذج البحث أعلاه والذي سيتم تقديمه للمستخدم النهائي. يتمثل الاختلاف الرئيسي بين الاثنين في أنه في النماذج التي يتم إنشاؤها من النماذج ، يجب علينا تحديد النموذج الذي سيتم استخدامه لإنشاء النموذج الخاص بنا. اقتباس
1 Bassam Ahmed3 نشر 23 فبراير 2022 أرسل تقرير نشر 23 فبراير 2022 هناك 3 أنواع من طرق التعامل مع Forms في Django الطريقة الأولى : هي ال class الذي يُكتب في ملف forms.py و الذي يرث من forms.ModelForm بالإضافة لكتابة اسم النموذج Model الذي تريد تحويلة إلى Forms وذلك بعد إستدعاؤه و هذا النوع هدفه الأول هو تحويل النماذج models إلى forms بدلاً من كتابتها من جديد مثال : from django import forms from .models import Volunteering class VolunteeringForm(forms.ModelForm): class Meta : model = Volunteering fields = ['name' , 'phone' , 'email' , 'national_id' , 'address'] labels = { 'name' : ('Name | الأسم'), 'phone' : ('Phone | الهاتف'), 'email' : ('Email | البريد الإلكتروني'), 'national_id' : ('National ID | الرقم القومي'), 'address' : ('Address | العنوان'), } الطريقة الثانية : هي إنشاء Forms خاصة عن طريق class يرث من forms.Form بشكل مباشر على سبيل المثال : from django import forms class VolunteerForm(forms.Form): name = forms.CharField(max_length=100) phone = forms.IntegerField() email = forms.EmailField() national_id = forms.CharField(max_length = 14) address = forms.CharField(max_length=200) الطريقة الثالثه و هي لا ترتبط بملف forms.py او models.py و إنما إنشاء نماذج خاصة في ملف الـ HTML Template و إستقبال البيانات من تلك النماذج على ملف views.py عن طريق كتابة الأمر ذلك على سبيل المثال تريد استقبال بيانات ذلك النموذج من ملف HTML <form action="/your-name/" method="post"> <label for="your_name">Your name: </label> <input id="your_name" type="text" name="your_name" value="{{ current_name }}"> <input type="submit" value="OK"> </form> في تلك الحاله يجب إستخدام الأمر التالي في ملف views.py من أجل إستقبال البيانات من نموذج HTML عن طريق الأمر cleaned_data.get name = form.cleaned_data['name'] 1 اقتباس
السؤال
Mohssen A Mohssen
كنت من فترة أقرأ في توثيق جانغو Django ، ووجدت أن هناك نوعين من الإستمارات Forms، النوع الأول هو forms.Form والآخر forms.ModelForm
لكن لم أفهم ما الفرق بين النوعين، هل يمكن لأي شخص أن يشرح لي أوجه التشابه والاختلاف بين هذين النوعين؟ ومتى أستعمل كل نوع منهما؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.