Django 2.1 - Form fields

फार्म फ़ील्ड्स




django

फार्म फ़ील्ड्स

class Field(**kwargs) [source]

जब आप एक Form क्लास बनाते हैं, तो सबसे महत्वपूर्ण हिस्सा फॉर्म के क्षेत्रों को परिभाषित करता है। प्रत्येक क्षेत्र में कुछ अन्य हुक के साथ कस्टम सत्यापन तर्क है।

Field.clean(value) [source]

यद्यपि आप प्राथमिक कक्षाओं में प्राथमिक कक्षाओं का उपयोग करेंगे, लेकिन आप उनका उपयोग तुरंत कर सकते हैं और उन्हें सीधे उपयोग कर सकते हैं कि वे कैसे काम करते हैं। प्रत्येक Field उदाहरण में एक clean() विधि होती है, जो एकल तर्क लेती है और या तो django.forms.ValidationError अपवाद को उठाती है या स्वच्छ मान लौटाती है:

>>> from django import forms
>>> f = forms.EmailField()
>>> f.clean('[email protected]')
'[email protected]'
>>> f.clean('invalid email address')
Traceback (most recent call last):
...
ValidationError: ['Enter a valid email address.']

मुख्य क्षेत्र तर्क

प्रत्येक Field वर्ग निर्माता कम से कम इन तर्कों को लेता है। कुछ Field कक्षाएं अतिरिक्त, फ़ील्ड-विशिष्ट तर्क लेती हैं, लेकिन निम्नलिखित को हमेशा स्वीकार किया जाना चाहिए:

required

Field.required

डिफ़ॉल्ट रूप से, प्रत्येक Field वर्ग मान लेता है कि मूल्य की आवश्यकता है, इसलिए यदि आप एक खाली मान पास करते हैं - या तो None या रिक्त स्ट्रिंग ( "" ) - तब clean() एक ValidationError अपवाद को बढ़ाएगा:

>>> from django import forms
>>> f = forms.CharField()
>>> f.clean('foo')
'foo'
>>> f.clean('')
Traceback (most recent call last):
...
ValidationError: ['This field is required.']
>>> f.clean(None)
Traceback (most recent call last):
...
ValidationError: ['This field is required.']
>>> f.clean(' ')
' '
>>> f.clean(0)
'0'
>>> f.clean(True)
'True'
>>> f.clean(False)
'False'

यह निर्दिष्ट करने के लिए कि किसी फ़ील्ड की आवश्यकता नहीं है, required=False पास करें required=False Field निर्माता को required=False :

>>> f = forms.CharField(required=False)
>>> f.clean('foo')
'foo'
>>> f.clean('')
''
>>> f.clean(None)
''
>>> f.clean(0)
'0'
>>> f.clean(True)
'True'
>>> f.clean(False)
'False'

यदि किसी Field की required=False और आप खाली मान clean() खाली मान पास करते हैं, तो clean() ValidationError बढ़ाने के बजाय सामान्यीकृत रिक्त मान लौटाएगा। CharField , यह एक खाली स्ट्रिंग होगा। अन्य Field कक्षाओं के लिए, यह None हो सकता है। (यह एक क्षेत्र से दूसरे क्षेत्र में भिन्न होता है।)

आवश्यक फ़ॉर्म फ़ील्ड के विजेट में आवश्यक HTML विशेषता होती है। इसे अक्षम करने के लिए Form.use_required_attribute विशेषता को False पर सेट करें। required विशेषता फॉर्मेट्स के रूपों में शामिल नहीं है क्योंकि फ़ॉर्मेट को जोड़ने और हटाने पर ब्राउज़र सत्यापन सही नहीं हो सकता है।

label

Field.label

label तर्क आपको इस क्षेत्र के लिए "मानव-अनुकूल" लेबल निर्दिष्ट करने देता है। इसका उपयोग तब किया जाता है जब Field को Form में प्रदर्शित किया जाता है।

जैसा कि ऊपर "HTML के रूप में आउटपुट स्वरूप" में समझाया गया है, Field लिए डिफ़ॉल्ट लेबल फ़ील्ड नाम से सभी अंडरस्कोर को रिक्त स्थान में परिवर्तित करके और पहले अक्षर को ऊपरी आवरण में उत्पन्न होता है। निर्दिष्ट करें कि यदि उस डिफ़ॉल्ट व्यवहार के परिणामस्वरूप पर्याप्त लेबल नहीं है।

यहां एक पूर्ण उदाहरण Form जो अपने दो क्षेत्रों के लिए label लागू करता है। हमने auto_id=False आउटपुट को सरल बनाने के लिए auto_id=False निर्दिष्ट किया है:

>>> from django import forms
>>> class CommentForm(forms.Form):
...     name = forms.CharField(label='Your name')
...     url = forms.URLField(label='Your website', required=False)
...     comment = forms.CharField()
>>> f = CommentForm(auto_id=False)
>>> print(f)
<tr><th>Your name:</th><td><input type="text" name="name" required></td></tr>
<tr><th>Your website:</th><td><input type="url" name="url"></td></tr>
<tr><th>Comment:</th><td><input type="text" name="comment" required></td></tr>

label_suffix

Field.label_suffix

label_suffix तर्क आपको प्रपत्र-फ़ील्ड के आधार पर फ़ॉर्म के label_suffix को ओवरराइड करने देता है:

>>> class ContactForm(forms.Form):
...     age = forms.IntegerField()
...     nationality = forms.CharField()
...     captcha_answer = forms.IntegerField(label='2 + 2', label_suffix=' =')
>>> f = ContactForm(label_suffix='?')
>>> print(f.as_p())
<p><label for="id_age">Age?</label> <input id="id_age" name="age" type="number" required></p>
<p><label for="id_nationality">Nationality?</label> <input id="id_nationality" name="nationality" type="text" required></p>
<p><label for="id_captcha_answer">2 + 2 =</label> <input id="id_captcha_answer" name="captcha_answer" type="number" required></p>

initial

Field.initial

initial तर्क आपको इस Field को अनबाउंड Form में प्रस्तुत करते समय उपयोग करने के लिए प्रारंभिक मान निर्दिष्ट करने देता है।

डायनामिक आरंभिक डेटा निर्दिष्ट करने के लिए, Form.initial पैरामीटर देखें।

इसके लिए उपयोग-मामला तब है जब आप एक "रिक्त" फॉर्म प्रदर्शित करना चाहते हैं जिसमें किसी क्षेत्र को किसी विशेष मान से आरंभ किया जाता है। उदाहरण के लिए:

>>> from django import forms
>>> class CommentForm(forms.Form):
...     name = forms.CharField(initial='Your name')
...     url = forms.URLField(initial='http://')
...     comment = forms.CharField()
>>> f = CommentForm(auto_id=False)
>>> print(f)
<tr><th>Name:</th><td><input type="text" name="name" value="Your name" required></td></tr>
<tr><th>Url:</th><td><input type="url" name="url" value="http://" required></td></tr>
<tr><th>Comment:</th><td><input type="text" name="comment" required></td></tr>

आप सोच रहे होंगे, कि फॉर्म प्रदर्शित करते समय डेटा के रूप में प्रारंभिक मानों का एक शब्दकोश ही क्यों न पारित किया जाए? ठीक है, यदि आप ऐसा करते हैं, तो आप सत्यापन को ट्रिगर करेंगे, और HTML आउटपुट में कोई भी सत्यापन त्रुटियाँ शामिल होंगी:

>>> class CommentForm(forms.Form):
...     name = forms.CharField()
...     url = forms.URLField()
...     comment = forms.CharField()
>>> default_data = {'name': 'Your name', 'url': 'http://'}
>>> f = CommentForm(default_data, auto_id=False)
>>> print(f)
<tr><th>Name:</th><td><input type="text" name="name" value="Your name" required></td></tr>
<tr><th>Url:</th><td><ul class="errorlist"><li>Enter a valid URL.</li></ul><input type="url" name="url" value="http://" required></td></tr>
<tr><th>Comment:</th><td><ul class="errorlist"><li>This field is required.</li></ul><input type="text" name="comment" required></td></tr>

यही कारण है कि initial मान केवल अनबाउंड रूपों के लिए प्रदर्शित किए जाते हैं। बाध्य प्रपत्रों के लिए, HTML आउटपुट बाध्य डेटा का उपयोग करेगा।

यह भी ध्यान दें कि यदि किसी विशेष क्षेत्र का मान नहीं दिया गया है तो सत्यापन में initial मानों को "फॉलबैक" डेटा के रूप में उपयोग नहीं किया जाता है। initial मान केवल प्रारंभिक प्रपत्र प्रदर्शन के लिए अभिप्रेत हैं:

>>> class CommentForm(forms.Form):
...     name = forms.CharField(initial='Your name')
...     url = forms.URLField(initial='http://')
...     comment = forms.CharField()
>>> data = {'name': '', 'url': '', 'comment': 'Foo'}
>>> f = CommentForm(data)
>>> f.is_valid()
False
# The form does *not* fall back to using the initial values.
>>> f.errors
{'url': ['This field is required.'], 'name': ['This field is required.']}

एक स्थिर के बजाय, आप किसी भी कॉल करने योग्य पास कर सकते हैं:

>>> import datetime
>>> class DateForm(forms.Form):
...     day = forms.DateField(initial=datetime.date.today)
>>> print(DateForm())
<tr><th>Day:</th><td><input type="text" name="day" value="12/23/2008" required><td></tr>

कॉल करने योग्य का मूल्यांकन केवल तभी किया जाएगा जब अनबाउंड फॉर्म प्रदर्शित किया जाता है, न कि जब इसे परिभाषित किया जाता है।

widget

Field.widget

widget तर्क आपको इस Field प्रस्तुत करते समय उपयोग करने के लिए एक Widget वर्ग निर्दिष्ट करता है। अधिक जानकारी के लिए Widgets देखें।

help_text

Field.help_text

help_text तर्क आपको इस Field लिए वर्णनात्मक पाठ निर्दिष्ट करने देता है। यदि आप help_text प्रदान करते हैं, तो इसे Field बगल में प्रदर्शित किया जाएगा जब Field सुविधा Form विधियों (जैसे, as_ul() ) में से एक द्वारा प्रदान की जाती है।

मॉडल फ़ील्ड के help_text , यह मान स्वचालित रूप से जनरेट किए गए फ़ॉर्मों में HTML-एस्केप नहीं है।

यहां एक पूर्ण उदाहरण Form जो अपने दो क्षेत्रों के लिए help_text को लागू करता है। हमने auto_id=False आउटपुट को सरल बनाने के लिए auto_id=False निर्दिष्ट किया है:

>>> from django import forms
>>> class HelpTextContactForm(forms.Form):
...     subject = forms.CharField(max_length=100, help_text='100 characters max.')
...     message = forms.CharField()
...     sender = forms.EmailField(help_text='A valid email address, please.')
...     cc_myself = forms.BooleanField(required=False)
>>> f = HelpTextContactForm(auto_id=False)
>>> print(f.as_table())
<tr><th>Subject:</th><td><input type="text" name="subject" maxlength="100" required><br><span class="helptext">100 characters max.</span></td></tr>
<tr><th>Message:</th><td><input type="text" name="message" required></td></tr>
<tr><th>Sender:</th><td><input type="email" name="sender" required><br>A valid email address, please.</td></tr>
<tr><th>Cc myself:</th><td><input type="checkbox" name="cc_myself"></td></tr>
>>> print(f.as_ul()))
<li>Subject: <input type="text" name="subject" maxlength="100" required> <span class="helptext">100 characters max.</span></li>
<li>Message: <input type="text" name="message" required></li>
<li>Sender: <input type="email" name="sender" required> A valid email address, please.</li>
<li>Cc myself: <input type="checkbox" name="cc_myself"></li>
>>> print(f.as_p())
<p>Subject: <input type="text" name="subject" maxlength="100" required> <span class="helptext">100 characters max.</span></p>
<p>Message: <input type="text" name="message" required></p>
<p>Sender: <input type="email" name="sender" required> A valid email address, please.</p>
<p>Cc myself: <input type="checkbox" name="cc_myself"></p>

error_messages

Field.error_messages

error_messages तर्क आपको डिफ़ॉल्ट संदेशों को ओवरराइड करने देता है जो फ़ील्ड बढ़ाएगा। उन कुंजियों के साथ एक शब्दकोश में पास करें जिसमें त्रुटि संदेश मेल खाते हैं जिन्हें आप ओवरराइड करना चाहते हैं। उदाहरण के लिए, यहां डिफ़ॉल्ट त्रुटि संदेश है:

>>> from django import forms
>>> generic = forms.CharField()
>>> generic.clean('')
Traceback (most recent call last):
  ...
ValidationError: ['This field is required.']

और यहाँ एक कस्टम त्रुटि संदेश है:

>>> name = forms.CharField(error_messages={'required': 'Please enter your name'})
>>> name.clean('')
Traceback (most recent call last):
  ...
ValidationError: ['Please enter your name']

नीचे अंतर्निहित फ़ील्ड वर्ग अनुभाग में, प्रत्येक Field उस त्रुटि संदेश कुंजियों को परिभाषित करता है जिसका वह उपयोग करता है।

validators

Field.validators

validators तर्क आपको इस क्षेत्र के सत्यापन कार्यों की सूची प्रदान करता है।

अधिक जानकारी के लिए सत्यापनकर्ता दस्तावेज देखें।

localize

Field.localize

localize तर्क प्रपत्र डेटा इनपुट, साथ ही प्रदान किए गए आउटपुट के स्थानीयकरण को सक्षम करता है।

अधिक जानकारी के लिए प्रारूप स्थानीयकरण प्रलेखन देखें।

disabled

Field.disabled

disabled बूलियन तर्क, जब True सेट होता है, अक्षम HTML विशेषता का उपयोग करते हुए एक फॉर्म फ़ील्ड अक्षम करता है ताकि यह उपयोगकर्ताओं द्वारा संपादन योग्य न हो। यहां तक ​​कि अगर कोई उपयोगकर्ता सर्वर पर सबमिट किए गए फ़ील्ड के मान के साथ छेड़छाड़ करता है, तो इसे फॉर्म के प्रारंभिक डेटा से मूल्य के पक्ष में अनदेखा किया जाएगा।

फ़ील्ड डेटा बदल गया है या नहीं, इसकी जाँच करना

has_changed()

Field.has_changed() [source]

फ़ील्ड मान को प्रारंभिक मान से बदल गया है, तो यह निर्धारित करने के लिए has_changed() विधि का उपयोग किया जाता है। True या False लौटाता है।

अधिक जानकारी के लिए Form.has_changed() प्रलेखन देखें।

बिल्ट-इन Field कक्षाएं

स्वाभाविक रूप से, forms लायब्रेरी Field वर्गों के एक सेट के साथ आती है जो सामान्य सत्यापन आवश्यकताओं का प्रतिनिधित्व करती है। यह खंड प्रत्येक अंतर्निहित फ़ील्ड में दस्तावेज़ बनाता है।

यदि आप widget निर्दिष्ट नहीं करते हैं, तो प्रत्येक फ़ील्ड के लिए, हम डिफ़ॉल्ट विजेट का उपयोग करते हैं। जब आप खाली मान प्रदान करते हैं तो हम दिए गए मान को भी निर्दिष्ट करते हैं (ऊपर दिए गए अनुभाग को देखें कि इसका क्या अर्थ है)।

BooleanField

class BooleanField(**kwargs) [source]
  • डिफ़ॉल्ट विजेट: CheckboxInput
  • रिक्त मान: False
  • इसे सामान्य करता है: एक पायथन True या False मान।
  • मान लेता है कि मान True (जैसे चेक बॉक्स की जाँच की जाती है) यदि फ़ील्ड के लिए required=True
  • त्रुटि संदेश कुंजी: required

ध्यान दें

चूंकि सभी Field उपवर्गों के लिए required=True डिफ़ॉल्ट रूप से required=True , यहां सत्यापन स्थिति महत्वपूर्ण है। यदि आप अपने फॉर्म में एक बूलियन शामिल करना चाहते हैं जो या तो True या False हो सकता है (उदाहरण के लिए चेक या अनचेक किया हुआ चेकबॉक्स), तो आपको BooleanField बनाते समय required=False में पास होना याद रखना चाहिए।

CharField

class CharField(**kwargs) [source]
  • डिफ़ॉल्ट विजेट: TextInput
  • खाली मान: आपने जो कुछ भी दिया है, empty_value
  • को सामान्य करता है: एक स्ट्रिंग।
  • MaxLengthValidator और MinLengthValidator उपयोग करता है यदि MaxLengthValidator और MinLengthValidator प्रदान की जाती है। अन्यथा, सभी इनपुट मान्य हैं।
  • त्रुटि संदेश कुंजियाँ: required , min_length , min_length

सत्यापन के लिए तीन वैकल्पिक तर्क हैं:

max_length
min_length

यदि प्रदान किया जाता है, तो ये तर्क सुनिश्चित करते हैं कि स्ट्रिंग अधिक से अधिक या कम से कम दी गई लंबाई है।

strip

यदि True (डिफ़ॉल्ट), मान व्हाट्सएप से अग्रणी और अनुगामी से छीन लिया जाएगा।

empty_value

"खाली" का प्रतिनिधित्व करने के लिए उपयोग करने के लिए मूल्य। एक खाली स्ट्रिंग में चूक।

ChoiceField

class ChoiceField(**kwargs) [source]
  • डिफ़ॉल्ट विजेट: Select
  • रिक्त मान: '' (एक रिक्त स्ट्रिंग)
  • को सामान्य करता है: एक स्ट्रिंग।
  • मान्य करता है कि दिए गए मूल्य विकल्पों की सूची में मौजूद हैं।
  • त्रुटि संदेश कुंजियाँ: required , invalid_choice

invalid_choice त्रुटि संदेश में %(value)s हो सकता है, जिसे चयनित विकल्प से बदल दिया जाएगा।

एक अतिरिक्त तर्क देता है:

choices

इस क्षेत्र के लिए विकल्प के रूप में उपयोग करने के लिए 2-ट्यूपल्स का या तो एक चलने योग्य (जैसे, एक सूची या टुपल) या एक कॉल करने योग्य जो इस तरह के पुनरावृत्ति देता है। यह तर्क मॉडल फ़ील्ड के लिए choices तर्क के समान स्वरूपों को स्वीकार करता है। अधिक विवरण के लिए विकल्पों पर मॉडल फ़ील्ड संदर्भ दस्तावेज़ देखें। यदि तर्क एक कॉल करने योग्य है, तो यह मूल्यांकन किया जाता है कि हर बार क्षेत्र के रूप को आरंभीकृत किया गया है। खाली सूची में चूक।

TypedChoiceField

class TypedChoiceField(**kwargs) [source]

ChoiceField तरह, ChoiceField को छोड़कर दो अतिरिक्त तर्क, empty_value और empty_value

  • डिफ़ॉल्ट विजेट: Select
  • खाली मान: आपने जो कुछ भी दिया है, empty_value
  • के लिए सामान्यीकृत: coerce तर्क द्वारा प्रदान किए गए प्रकार का एक मूल्य।
  • मान्य करता है कि दिए गए मूल्य विकल्पों की सूची में मौजूद हैं और उन्हें ज़ब्त किया जा सकता है।
  • त्रुटि संदेश कुंजियाँ: required , invalid_choice

अतिरिक्त तर्क देता है:

coerce

एक फ़ंक्शन जो एक तर्क लेता है और एक ज़ोरदार मान देता है। उदाहरणों में अंतर्निर्मित, float , bool और अन्य प्रकार शामिल हैं। एक पहचान समारोह के लिए चूक। ध्यान दें कि इनपुट सत्यापन के बाद ज़बरदस्ती होती है, इसलिए choices में मौजूद मूल्य पर जोर देना संभव है।

empty_value

"रिक्त" का प्रतिनिधित्व करने के लिए उपयोग करने के लिए मान रिक्त स्ट्रिंग के लिए डिफ़ॉल्ट; None भी अन्य आम पसंद None है। ध्यान दें कि यह मान coerce तर्क में दिए गए फ़ंक्शन द्वारा ज़ब्त नहीं किया जाएगा, इसलिए इसे उसी के अनुसार चुनें।

DateField

class DateField(**kwargs) [source]
  • डिफ़ॉल्ट विजेट: DateInput
  • खाली मान: None
  • इसे सामान्य करता है: एक पायथन datetime.date ऑब्जेक्ट।
  • पुष्टि करता है कि दिया गया मान या तो datetime.date , datetime.datetime / datetime.datetime या स्ट्रिंग एक विशेष तिथि प्रारूप में स्वरूपित है।
  • त्रुटि संदेश कुंजियाँ: required , invalid

एक वैकल्पिक तर्क लेता है:

input_formats

एक स्ट्रिंग को एक वैध datetime.date ऑब्जेक्ट में बदलने का प्रयास करने के लिए उपयोग किए जाने वाले प्रारूपों की एक सूची।

यदि कोई input_formats तर्क प्रदान नहीं किया गया है, तो डिफ़ॉल्ट इनपुट प्रारूप हैं:

['%Y-%m-%d',      # '2006-10-25'
 '%m/%d/%Y',      # '10/25/2006'
 '%m/%d/%y']      # '10/25/06'

इसके अतिरिक्त, यदि आप अपनी सेटिंग में USE_L10N=False निर्दिष्ट करते हैं, तो निम्नलिखित को भी डिफ़ॉल्ट इनपुट स्वरूपों में शामिल किया जाएगा:

['%b %d %Y',      # 'Oct 25 2006'
 '%b %d, %Y',     # 'Oct 25, 2006'
 '%d %b %Y',      # '25 Oct 2006'
 '%d %b, %Y',     # '25 Oct, 2006'
 '%B %d %Y',      # 'October 25 2006'
 '%B %d, %Y',     # 'October 25, 2006'
 '%d %B %Y',      # '25 October 2006'
 '%d %B, %Y']     # '25 October, 2006'

स्थानीयकरण का प्रारूप भी देखें।

DateTimeField

class DateTimeField(**kwargs) [source]
  • डिफ़ॉल्ट विजेट: DateTimeInput
  • खाली मान: None
  • इसके लिए सामान्यीकृत करता है: एक पायथन datetime.datetime ऑब्जेक्ट।
  • पुष्टि करता है कि दिया गया मान या तो एक datetime.datetime , datetime.date या स्ट्रिंग एक विशेष डेटाइम प्रारूप में स्वरूपित है।
  • त्रुटि संदेश कुंजियाँ: required , invalid

एक वैकल्पिक तर्क लेता है:

input_formats

किसी स्ट्रिंग को एक मान्य datetime.datetime ऑब्जेक्ट में कनवर्ट करने का प्रयास करने के लिए उपयोग किए गए प्रारूपों की एक सूची।

यदि कोई input_formats तर्क प्रदान नहीं किया गया है, तो डिफ़ॉल्ट इनपुट प्रारूप हैं:

['%Y-%m-%d %H:%M:%S',    # '2006-10-25 14:30:59'
 '%Y-%m-%d %H:%M',       # '2006-10-25 14:30'
 '%Y-%m-%d',             # '2006-10-25'
 '%m/%d/%Y %H:%M:%S',    # '10/25/2006 14:30:59'
 '%m/%d/%Y %H:%M',       # '10/25/2006 14:30'
 '%m/%d/%Y',             # '10/25/2006'
 '%m/%d/%y %H:%M:%S',    # '10/25/06 14:30:59'
 '%m/%d/%y %H:%M',       # '10/25/06 14:30'
 '%m/%d/%y']             # '10/25/06'

स्थानीयकरण का प्रारूप भी देखें।

DecimalField

class DecimalField(**kwargs) [source]
  • डिफ़ॉल्ट विजेट: NumberInput जब Field.localize False , तो TextInput
  • खाली मान: None
  • सामान्यीकृत करता है: एक पायथन decimal
  • पुष्टि करता है कि दिया गया मान एक दशमलव है। MaxValueValidator और MinValueValidator उपयोग करता है यदि max_value और min_value प्रदान किए min_value हैं। व्हाट्सएप पर लीडिंग और ट्रेलिंग को नजरअंदाज किया जाता है।
  • त्रुटि संदेश कुंजियाँ: required , invalid , max_value , min_value , max_digits , max_decimal_places , max_whole_digits

max_value और min_value त्रुटि संदेशों में %(limit_value)s हो सकते हैं, जिन्हें उचित सीमा द्वारा प्रतिस्थापित किया जाएगा। इसी तरह, max_digits , max_decimal_places और max_whole_digits त्रुटि संदेशों में %(max)s हो सकता है।

चार वैकल्पिक तर्क देता है:

max_value
min_value

ये क्षेत्र में अनुमत मानों की श्रेणी को नियंत्रित करते हैं, और decimal.Decimal रूप में दिया जाना चाहिए। decimal.Decimal मान।

max_digits

अंकों की अधिकतम संख्या (दशमलव बिंदु से पहले उन लोगों के अलावा जो दशमलव बिंदु के बाद, प्रमुख शून्य छीन लिए गए) के मूल्य में अनुमत है।

decimal_places

अधिकतम दशमलव स्थानों की अनुमति है।

DurationField

class DurationField(**kwargs) [source]
  • डिफ़ॉल्ट विजेट: TextInput
  • खाली मान: None
  • को सामान्य करता है: एक पायथन timedelta
  • पुष्टि करता है कि दिया गया मूल्य एक स्ट्रिंग है जिसे एक timedelta में परिवर्तित किया जा सकता है। मान datetime.timedelta.min और datetime.timedelta.max बीच होना चाहिए।
  • त्रुटि संदेश कुंजियाँ: required , invalid , overflow

parse_duration() द्वारा समझे गए किसी भी प्रारूप को स्वीकार करता है।

EmailField

class EmailField(**kwargs) [source]
  • डिफ़ॉल्ट विजेट: EmailInput
  • रिक्त मान: '' (एक रिक्त स्ट्रिंग)
  • को सामान्य करता है: एक स्ट्रिंग।
  • एक मान्य ईमेल पते का उपयोग करके मान्य करने के लिए EmailValidator का उपयोग करता है, एक मामूली जटिल नियमित अभिव्यक्ति का उपयोग करके।
  • त्रुटि संदेश कुंजियाँ: required , invalid

सत्यापन के लिए दो वैकल्पिक तर्क हैं, min_length और min_length । यदि प्रदान किया जाता है, तो ये तर्क सुनिश्चित करते हैं कि स्ट्रिंग अधिक से अधिक या कम से कम दी गई लंबाई है।

FileField

class FileField(**kwargs) [source]
  • डिफ़ॉल्ट विजेट: ClearableFileInput
  • खाली मान: None
  • सामान्यीकृत करता है: एक UploadedFile ऑब्जेक्ट जो फ़ाइल सामग्री और फ़ाइल नाम को एक ही ऑब्जेक्ट में लपेटता है।
  • यह सत्यापित कर सकता है कि गैर-रिक्त फ़ाइल डेटा प्रपत्र के लिए बाध्य है।
  • त्रुटि संदेश कुंजियाँ: required , invalid , missing , empty , max_length

सत्यापन के लिए दो वैकल्पिक तर्क हैं, allow_empty_file और allow_empty_file । यदि प्रदान किया जाता है, तो ये सुनिश्चित करते हैं कि फ़ाइल का नाम दी गई लंबाई पर है, और फ़ाइल सामग्री खाली होने पर भी सत्यापन सफल होगा।

UploadedFile ऑब्जेक्ट के बारे में अधिक जानने के लिए, फ़ाइल अपलोड प्रलेखन देखें

जब आप किसी फॉर्म में FileField उपयोग करते हैं, तो आपको फाइल डेटा को फॉर्म में बांधना भी याद रखना चाहिए।

max_length त्रुटि फ़ाइल नाम की लंबाई को संदर्भित करती है। उस कुंजी के लिए त्रुटि संदेश में, %(max)d को अधिकतम फ़ाइल नाम लंबाई के साथ बदल दिया जाएगा और %(length)d को वर्तमान फ़ाइल नाम लंबाई के साथ बदल दिया जाएगा।

FilePathField

class FilePathField(**kwargs) [source]
  • डिफ़ॉल्ट विजेट: Select
  • खाली मान: None
  • को सामान्य करता है: एक स्ट्रिंग।
  • सत्यापित करता है कि चयनित विकल्प विकल्पों की सूची में मौजूद है।
  • त्रुटि संदेश कुंजियाँ: required , invalid_choice

क्षेत्र एक निश्चित निर्देशिका के अंदर फ़ाइलों से चुनने की अनुमति देता है। यह पाँच अतिरिक्त तर्क लेता है; केवल path की आवश्यकता है:

path

निर्देशिका के लिए पूर्ण पथ जिसकी सामग्री आप सूचीबद्ध करना चाहते हैं। यह निर्देशिका मौजूद होनी चाहिए।

recursive

यदि False (डिफ़ॉल्ट) केवल path की प्रत्यक्ष सामग्री को विकल्प के रूप में पेश किया जाएगा। यदि यह True , तो निर्देशिका को पुनरावर्ती रूप में उतारा जाएगा और सभी वंशों को विकल्पों के रूप में सूचीबद्ध किया जाएगा।

match

एक नियमित अभिव्यक्ति पैटर्न; इस अभिव्यक्ति से मेल खाने वाले नामों की केवल फाइलों को ही विकल्प के रूप में अनुमति दी जाएगी।

allow_files

वैकल्पिक। या तो True या False । डिफ़ॉल्ट True । निर्दिष्ट करता है कि निर्दिष्ट स्थान की फाइलें शामिल की जानी चाहिए या नहीं। या तो यह या allow_folders True होना चाहिए।

allow_folders

वैकल्पिक। या तो True या False । डिफ़ॉल्ट False । निर्दिष्ट करता है कि क्या निर्दिष्ट स्थान में फ़ोल्डर्स शामिल किए जाने चाहिए। या तो यह या allow_files True होना चाहिए।

FloatField

class FloatField(**kwargs) [source]
  • डिफ़ॉल्ट विजेट: NumberInput जब Field.localize False , तो TextInput
  • खाली मान: None
  • इसे सामान्य करता है: एक पायथन फ्लोट।
  • पुष्टि करता है कि दिया गया मान एक फ्लोट है। MaxValueValidator और MinValueValidator उपयोग करता है यदि max_value और min_value प्रदान किए min_value हैं। अग्रणी और अनुगामी व्हाट्सएप की अनुमति है, जैसा कि पायथन के float() फ़ंक्शन में है।
  • त्रुटि संदेश कुंजियाँ: required , invalid , max_value , min_value

सत्यापन के लिए दो वैकल्पिक तर्क देता है, max_value और min_value । ये क्षेत्र में अनुमत मूल्यों की सीमा को नियंत्रित करते हैं।

ImageField

class ImageField(**kwargs) [source]
  • डिफ़ॉल्ट विजेट: ClearableFileInput
  • खाली मान: None
  • सामान्यीकृत करता है: एक UploadedFile ऑब्जेक्ट जो फ़ाइल सामग्री और फ़ाइल नाम को एक ही ऑब्जेक्ट में लपेटता है।
  • मान्य करता है कि फ़ाइल डेटा प्रपत्र के लिए बाध्य है। यह भी पुष्टि करने के लिए FileExtensionValidator का उपयोग करता है कि फ़ाइल एक्सटेंशन तकिए द्वारा समर्थित है।
  • त्रुटि संदेश कुंजियाँ: required , invalid , missing , empty , invalid_image

ImageField का उपयोग करने के लिए आवश्यक है कि आपके द्वारा उपयोग किए जाने वाले छवि प्रारूपों के समर्थन के साथ Pillow स्थापित हो। यदि आप किसी छवि को अपलोड करते समय एक corrupt image त्रुटि का सामना करते हैं, तो आमतौर पर इसका मतलब है कि तकिया इसके प्रारूप को नहीं समझता है। इसे ठीक करने के लिए, उपयुक्त लाइब्रेरी स्थापित करें और तकिया को पुनर्स्थापित करें।

जब आप किसी फ़ॉर्म पर ImageField उपयोग करते हैं, तो आपको फ़ाइल डेटा को फ़ॉर्म में बाँधना भी याद रखना चाहिए।

फ़ील्ड को साफ़ करने और सत्यापित करने के बाद, UploadedFile ऑब्जेक्ट में एक अतिरिक्त image विशेषता होगी, जिसमें पिलो Image उदाहरण शामिल है जो यह जांचने के लिए उपयोग किया जाता है कि क्या फ़ाइल एक वैध छवि थी। इसके अलावा, UploadedFile.content_type छवि के सामग्री प्रकार के साथ अद्यतन किया जाएगा यदि तकिया इसे निर्धारित कर सकता है, अन्यथा यह किसी को None सेट None

IntegerField

class IntegerField(**kwargs) [source]
  • डिफ़ॉल्ट विजेट: NumberInput जब Field.localize False , तो TextInput
  • खाली मान: None
  • सामान्यीकृत करता है: एक पायथन पूर्णांक।
  • मान्य करता है कि दिया गया मान पूर्णांक है। MaxValueValidator और MinValueValidator उपयोग करता है यदि max_value और min_value प्रदान किए min_value हैं। अग्रणी और अनुगामी व्हाट्सएप की अनुमति है, जैसा कि पायथन के int() फ़ंक्शन में है।
  • त्रुटि संदेश कुंजियाँ: required , invalid , max_value , min_value

max_value और min_value त्रुटि संदेशों में %(limit_value)s हो सकते हैं, जिन्हें उचित सीमा द्वारा प्रतिस्थापित किया जाएगा।

सत्यापन के लिए दो वैकल्पिक तर्क देता है:

max_value
min_value

ये क्षेत्र में अनुमत मूल्यों की सीमा को नियंत्रित करते हैं।

GenericIPAddressField

class GenericIPAddressField(**kwargs) [source]

एक फ़ील्ड जिसमें IPv4 या IPv6 पता होता है।

  • डिफ़ॉल्ट विजेट: TextInput
  • रिक्त मान: '' (एक रिक्त स्ट्रिंग)
  • को सामान्य करता है: एक स्ट्रिंग। IPv6 पतों को नीचे वर्णित के अनुसार सामान्यीकृत किया गया है।
  • पुष्टि करता है कि दिया गया मान एक मान्य IP पता है।
  • त्रुटि संदेश कुंजियाँ: required , invalid

IPv6 पता सामान्यीकरण RFC 4291 # अनुभाग-2.2 खंड 2.2 का अनुसरण करता है, जिसमें उस खंड के पैराग्राफ 3 में सुझाए गए IPv4 प्रारूप का उपयोग करना शामिल है, जैसे ::ffff:192.0.2.0 । उदाहरण के लिए, 2001:0::0:01 को 2001::1 , और ::ffff:0a0a:0a0a से ::ffff:10.10.10.10 । सभी वर्णों को लोअरकेस में बदल दिया जाता है।

दो वैकल्पिक तर्क देता है:

protocol

निर्दिष्ट प्रोटोकॉल में मान्य इनपुट्स को सीमित करता है। स्वीकृत मान both (डिफ़ॉल्ट), IPv4 या IPv6 । मिलान असंवेदनशील है।

unpack_ipv4

IPv4 मैप किए गए पते जैसे ::ffff:192.0.2.1 । यदि यह विकल्प सक्षम है तो पता 192.0.2.1 अनपैक किया जाएगा। डिफ़ॉल्ट अक्षम है। केवल तब उपयोग किया जा सकता है जब protocol 'both' सेट हो।

MultipleChoiceField

class MultipleChoiceField(**kwargs) [source]
  • डिफ़ॉल्ट विजेट: SelectMultiple
  • रिक्त मान: [] (एक खाली सूची)
  • के लिए सामान्यीकृत: तार की एक सूची।
  • मान्य करता है कि मूल्यों की दी गई सूची में हर मूल्य विकल्पों की सूची में मौजूद है।
  • त्रुटि संदेश कुंजियाँ: required , invalid_choice , invalid_list

invalid_choice त्रुटि संदेश में %(value)s हो सकता है, जिसे चयनित विकल्प से बदल दिया जाएगा।

ChoiceField लिए, एक अतिरिक्त आवश्यक तर्क, choices ChoiceField

TypedMultipleChoiceField

class TypedMultipleChoiceField(**kwargs) [source]

जैसे कि एक TypedMultipleChoiceField , TypedMultipleChoiceField को छोड़कर, दो अतिरिक्त तर्क देता है, empty_value और empty_value

  • डिफ़ॉल्ट विजेट: SelectMultiple
  • खाली मान: आपने जो कुछ भी दिया है, empty_value
  • सामान्यीकृत करता है: coerce तर्क द्वारा प्रदान किए गए प्रकार के मूल्यों की एक सूची।
  • मान्य करता है कि दिए गए मान विकल्पों की सूची में मौजूद हैं और उन्हें ज़ब्त किया जा सकता है।
  • त्रुटि संदेश कुंजियाँ: required , invalid_choice

invalid_choice त्रुटि संदेश में %(value)s हो सकता है, जिसे चयनित विकल्प से बदल दिया जाएगा।

empty_value , दो अतिरिक्त तर्क देता है, empty_value और TypedChoiceField

NullBooleanField

class NullBooleanField(**kwargs) [source]
  • डिफ़ॉल्ट विजेट: NullBooleanSelect
  • खाली मान: None
  • इसके लिए सामान्यीकृत: एक पायथन True , False या None मूल्य None
  • कुछ भी नहीं मान्य (यानी, यह कभी भी वैधता नहीं बढ़ाता है)।

RegexField

class RegexField(**kwargs) [source]
  • डिफ़ॉल्ट विजेट: TextInput
  • रिक्त मान: '' (एक रिक्त स्ट्रिंग)
  • को सामान्य करता है: एक स्ट्रिंग।
  • RegexValidator का उपयोग यह RegexValidator करने के लिए करता है कि दिए गए मूल्य एक निश्चित नियमित अभिव्यक्ति से मेल खाते हैं।
  • त्रुटि संदेश कुंजियाँ: required , invalid

एक आवश्यक तर्क लेता है:

regex

एक स्ट्रिंग या संकलित नियमित अभिव्यक्ति ऑब्जेक्ट के रूप में निर्दिष्ट एक नियमित अभिव्यक्ति।

साथ ही min_length , min_length और strip लेता है, जो CharField ही काम करते हैं।

strip

False करने के लिए चूक। यदि सक्षम किया गया है, तो स्ट्रिपिंग को रेगेक्स सत्यापन से पहले लागू किया जाएगा।

SlugField

class SlugField(**kwargs) [source]
  • डिफ़ॉल्ट विजेट: TextInput
  • रिक्त मान: '' (एक रिक्त स्ट्रिंग)
  • को सामान्य करता है: एक स्ट्रिंग।
  • मान्य_ validate_slug या validate_unicode_slug का उपयोग यह validate_slug validate_unicode_slug लिए करता है कि दिए गए मान में केवल अक्षर, संख्याएँ, अंडरस्कोर और हाइफ़न हैं।
  • त्रुटि संदेश: required , invalid

इस क्षेत्र का उपयोग रूपों में एक मॉडल SlugField प्रतिनिधित्व करने के लिए किया जाता है।

एक वैकल्पिक पैरामीटर लेता है:

allow_unicode

एक बूलियन जो ASCII पत्रों के अलावा यूनिकोड अक्षरों को स्वीकार करने के लिए क्षेत्र को निर्देश देता है। False करने के लिए चूक।

TimeField

class TimeField(**kwargs) [source]
  • डिफ़ॉल्ट विजेट: TextInput
  • खाली मान: None
  • इसे सामान्य करता है: एक पायथन datetime.time ऑब्जेक्ट।
  • पुष्टि करता है कि दिया गया मान या तो एक विशेष समय प्रारूप में एक datetime.time या स्ट्रिंग स्वरूपित है।
  • त्रुटि संदेश कुंजियाँ: required , invalid

एक वैकल्पिक तर्क लेता है:

input_formats

किसी स्ट्रिंग को एक मान्य datetime.time ऑब्जेक्ट में बदलने का प्रयास करने के लिए उपयोग किए जाने वाले प्रारूपों की एक सूची।

यदि कोई input_formats तर्क प्रदान नहीं किया गया है, तो डिफ़ॉल्ट इनपुट प्रारूप हैं:

'%H:%M:%S',     # '14:30:59'
'%H:%M',        # '14:30'

URLField

class URLField(**kwargs) [source]
  • डिफ़ॉल्ट विजेट: URLInput
  • रिक्त मान: '' (एक रिक्त स्ट्रिंग)
  • को सामान्य करता है: एक स्ट्रिंग।
  • URLValidator का उपयोग यह URLValidator करने के लिए करता है कि दिया गया मान मान्य URL है।
  • त्रुटि संदेश कुंजियाँ: required , invalid

निम्नलिखित वैकल्पिक तर्क देता है:

max_length
min_length

ये CharField.max_length और CharField.min_length

UUIDField

class UUIDField(**kwargs) [source]
  • डिफ़ॉल्ट विजेट: TextInput
  • रिक्त मान: '' (एक रिक्त स्ट्रिंग)
  • सामान्यीकृत करता है: एक UUID वस्तु।
  • त्रुटि संदेश कुंजियाँ: required , invalid

यह क्षेत्र UUID कंस्ट्रक्टर के hex तर्क के रूप में स्वीकार किए गए किसी भी स्ट्रिंग प्रारूप को स्वीकार करेगा।

थोड़ा जटिल बिल्ट-इन Field कक्षाएं

ComboField

class ComboField(**kwargs) [source]
  • डिफ़ॉल्ट विजेट: TextInput
  • रिक्त मान: '' (एक रिक्त स्ट्रिंग)
  • को सामान्य करता है: एक स्ट्रिंग।
  • ComboField तर्क के रूप में निर्दिष्ट प्रत्येक फ़ील्ड के विरुद्ध दिए गए मान को मान्य करता है।
  • त्रुटि संदेश कुंजियाँ: required , invalid

एक अतिरिक्त आवश्यक तर्क देता है:

fields

फ़ील्ड की सूची जिसका उपयोग फ़ील्ड के मान को मान्य करने के लिए किया जाना चाहिए (जिस क्रम में उन्हें प्रदान किया गया है)।

>>> from django.forms import ComboField
>>> f = ComboField(fields=[CharField(max_length=20), EmailField()])
>>> f.clean('[email protected]')
'[email protected]'
>>> f.clean('[email protected]')
Traceback (most recent call last):
...
ValidationError: ['Ensure this value has at most 20 characters (it has 28).']

MultiValueField

class MultiValueField(fields=(), **kwargs) [source]
  • डिफ़ॉल्ट विजेट: TextInput
  • रिक्त मान: '' (एक रिक्त स्ट्रिंग)
  • सामान्यीकृत करता है: उपवर्ग की compress विधि द्वारा लौटाया गया प्रकार।
  • MultiValueField तर्क के रूप में निर्दिष्ट प्रत्येक फ़ील्ड के विरुद्ध दिए गए मान को मान्य करता है।
  • त्रुटि संदेश कुंजियाँ: required , invalid , incomplete

एक साथ कई क्षेत्रों के तर्क को एकत्रित करता है जो एक ही मूल्य का उत्पादन करते हैं।

यह क्षेत्र अमूर्त है और इसे उपवर्गित किया जाना चाहिए। एकल-मूल्य फ़ील्ड के विपरीत, MultiValueField उपवर्गों को clean() लागू नहीं करना चाहिए - बल्कि compress() लागू करना चाहिए।

एक अतिरिक्त आवश्यक तर्क देता है:

fields

उन क्षेत्रों का एक समूह जिसका मान साफ ​​किया जाता है और बाद में एक एकल मूल्य में संयोजित किया जाता है। फ़ील्ड के प्रत्येक मान को फ़ील्ड में संबंधित फ़ील्ड द्वारा साफ़ किया जाता है - पहला मान पहले फ़ील्ड द्वारा साफ़ किया जाता है, दूसरे फ़ील्ड द्वारा दूसरा मान साफ़ किया जाता है, आदि सभी फ़ील्ड्स को साफ़ करने के बाद, स्वच्छ मानों की सूची को संयुक्त किया जाता है compress() द्वारा एक एकल मान compress()

कुछ वैकल्पिक तर्क भी लेता है:

require_all_fields

किसी भी फ़ील्ड के लिए कोई मान प्रदान नहीं किए जाने पर, True लिए डिफ़ॉल्ट, जिस स्थिति में एक required सत्यापन त्रुटि को उठाया जाएगा।

जब False सेट किया जाता है, तो Field.required विशेषता उन्हें वैकल्पिक बनाने के लिए व्यक्तिगत फ़ील्ड के लिए False सेट किया जा सकता है। यदि आवश्यक फ़ील्ड के लिए कोई मूल्य नहीं दिया जाता है, तो incomplete सत्यापन त्रुटि उठाई जाएगी।

एक डिफ़ॉल्ट incomplete त्रुटि संदेश को MultiValueField उपवर्ग पर परिभाषित किया जा सकता है, या प्रत्येक व्यक्तिगत क्षेत्र पर विभिन्न संदेशों को परिभाषित किया जा सकता है। उदाहरण के लिए:

from django.core.validators import RegexValidator

class PhoneField(MultiValueField):
    def __init__(self, **kwargs):
        # Define one message for all fields.
        error_messages = {
            'incomplete': 'Enter a country calling code and a phone number.',
        }
        # Or define a different message for each field.
        fields = (
            CharField(
                error_messages={'incomplete': 'Enter a country calling code.'},
                validators=[
                    RegexValidator(r'^[0-9]+$', 'Enter a valid country calling code.'),
                ],
            ),
            CharField(
                error_messages={'incomplete': 'Enter a phone number.'},
                validators=[RegexValidator(r'^[0-9]+$', 'Enter a valid phone number.')],
            ),
            CharField(
                validators=[RegexValidator(r'^[0-9]+$', 'Enter a valid extension.')],
                required=False,
            ),
        )
        super().__init__(
            error_messages=error_messages, fields=fields,
            require_all_fields=False, **kwargs
        )
widget

django.forms.MultiWidget का एक उपवर्ग होना चाहिए। डिफ़ॉल्ट मान TextInput , जो शायद इस मामले में बहुत उपयोगी नहीं है।

compress(data_list) [source]

मान्य मानों की एक सूची लेता है और उन मानों का "संपीड़ित" संस्करण लौटाता है - एक मूल्य में। उदाहरण के लिए, SplitDateTimeField एक उपवर्ग है जो एक टाइम फ़ील्ड और डेट फ़ील्ड को SplitDateTimeField में जोड़ता है।

इस विधि को उपवर्गों में लागू किया जाना चाहिए।

SplitDateTimeField

class SplitDateTimeField(**kwargs) [source]
  • डिफ़ॉल्ट विजेट: SplitDateTimeWidget
  • खाली मान: None
  • सामान्यीकृत करता है: एक पायथन datetime.datetime ऑब्जेक्ट।
  • पुष्टि करता है कि दिया गया मान datetime.datetime एक विशिष्ट स्ट्रिंगटाइम प्रारूप में स्वरूपित स्ट्रिंग है।
  • त्रुटि संदेश कुंजियाँ: required , invalid , invalid_date , invalid_time

दो वैकल्पिक तर्क देता है:

input_date_formats

किसी स्ट्रिंग को एक मान्य datetime.date ऑब्जेक्ट में बदलने का प्रयास करने के लिए उपयोग किए जाने वाले प्रारूपों की एक सूची ।

यदि कोई input_date_formats तर्क नहीं दिया गया है, तो डिफ़ॉल्ट इनपुट स्वरूपों DateField का उपयोग किया जाता है।

input_time_formats

किसी स्ट्रिंग को एक मान्य datetime.time ऑब्जेक्ट में बदलने का प्रयास करने के लिए उपयोग किए जाने वाले प्रारूपों की एक सूची ।

यदि कोई input_time_formats तर्क नहीं दिया गया है, तो डिफ़ॉल्ट इनपुट स्वरूपों TimeField का उपयोग किया जाता है।

फील्ड्स जो रिश्तों को संभालती हैं

मॉडलों के बीच संबंधों का प्रतिनिधित्व करने के लिए दो क्षेत्र उपलब्ध हैं: ModelChoiceField और ModelMultipleChoiceField । इन दोनों क्षेत्रों के लिए एक एकल queryset पैरामीटर की आवश्यकता होती है जिसका उपयोग फ़ील्ड के लिए विकल्प बनाने के लिए किया जाता है। प्रपत्र सत्यापन के बाद, ये फ़ील्ड फ़ॉर्म के शब्दकोश में या तो एक मॉडल ऑब्जेक्ट ( ModelChoiceField ) के मामले में या कई मॉडल ऑब्जेक्ट (मामले में ModelMultipleChoiceField ) को जगह देंगे cleaned_data

अधिक जटिल उपयोगों के लिए, आप queryset=None प्रपत्र फ़ील्ड की घोषणा करते समय निर्दिष्ट कर सकते हैं और फिर queryset फ़ॉर्म की __init__() विधि को पॉप्युलेट कर सकते हैं :

class FooMultipleChoiceForm(forms.Form):
    foo_select = forms.ModelMultipleChoiceField(queryset=None)

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['foo_select'].queryset = ...

ModelChoiceField

class ModelChoiceField(**kwargs) [source]
  • डिफ़ॉल्ट विजेट: Select
  • खाली मान: None
  • के लिए सामान्यीकृत: एक मॉडल उदाहरण।
  • पुष्टि करता है कि दिए गए आईडी क्वेरीसेट में मौजूद हैं।
  • त्रुटि संदेश कुंजियाँ: required , invalid_choice

एक एकल मॉडल ऑब्जेक्ट के चयन की अनुमति देता है, जो एक विदेशी कुंजी का प्रतिनिधित्व करने के लिए उपयुक्त है। ध्यान दें कि ModelChoiceField प्रविष्टियों की संख्या बढ़ने पर डिफ़ॉल्ट विजेट अव्यवहारिक हो जाता है। आपको 100 से अधिक वस्तुओं के लिए इसका उपयोग करने से बचना चाहिए।

एक एकल तर्क की आवश्यकता है:

queryset

एक QuerySet मॉडल ऑब्जेक्ट जिसमें से फ़ील्ड के लिए विकल्प निकाले जाते हैं और जिसका उपयोग उपयोगकर्ता के चयन को मान्य करने के लिए किया जाता है। प्रपत्र का प्रतिपादन होने पर इसका मूल्यांकन किया जाता है।

ModelChoiceField दो वैकल्पिक तर्क भी लेता है:

empty_label

डिफ़ॉल्ट रूप से <select> उपयोग किए जाने वाले विजेट ModelChoiceField में सूची के शीर्ष पर एक खाली विकल्प होगा। आप यह लेबल का पाठ (जो बदल सकते हैं "---------" के साथ डिफ़ॉल्ट रूप से) empty_label विशेषता है, या आप की स्थापना करके खाली लेबल पूरी तरह से निष्क्रिय कर सकते हैं empty_label करने के लिए None :

# A custom empty label
field1 = forms.ModelChoiceField(queryset=..., empty_label="(Nothing)")

# No empty label
field2 = forms.ModelChoiceField(queryset=..., empty_label=None)

ध्यान दें कि यदि कोई ModelChoiceField आवश्यक है और एक डिफ़ॉल्ट प्रारंभिक मूल्य है, तो कोई भी खाली विकल्प नहीं बनाया जाता है (मूल्य के बावजूद empty_label )।

to_field_name

फ़ील्ड के विजेट में विकल्पों के मूल्य के रूप में उपयोग करने के लिए फ़ील्ड को निर्दिष्ट करने के लिए इस वैकल्पिक तर्क का उपयोग किया जाता है। सुनिश्चित करें कि यह मॉडल के लिए एक अनूठा क्षेत्र है, अन्यथा चयनित मूल्य एक से अधिक ऑब्जेक्ट से मेल खा सकता है। डिफ़ॉल्ट रूप से यह निर्धारित किया जाता है None , जिस स्थिति में प्रत्येक वस्तु की प्राथमिक कुंजी का उपयोग किया जाएगा। उदाहरण के लिए:

# No custom to_field_name
field1 = forms.ModelChoiceField(queryset=...)

उपज होगी:

<select id="id_field1" name="field1">
<option value="obj1.pk">Object1</option>
<option value="obj2.pk">Object2</option>
...
</select>

तथा:

# to_field_name provided
field2 = forms.ModelChoiceField(queryset=..., to_field_name="name")

उपज होगी:

<select id="id_field2" name="field2">
<option value="obj1.name">Object1</option>
<option value="obj2.name">Object2</option>
...
</select>

__str__() क्षेत्र की पसंद में उपयोग के लिए वस्तुओं के स्ट्रिंग प्रतिनिधित्व उत्पन्न करने के लिए मॉडल की विधि को बुलाया जाएगा। अनुकूलित अभ्यावेदन, उपवर्ग ModelChoiceField और ओवरराइड प्रदान करने के लिए label_from_instance । इस पद्धति को एक मॉडल ऑब्जेक्ट प्राप्त होगा और इसे प्रतिनिधित्व करने के लिए उपयुक्त स्ट्रिंग वापस करना चाहिए। उदाहरण के लिए:

from django.forms import ModelChoiceField

class MyModelChoiceField(ModelChoiceField):
    def label_from_instance(self, obj):
        return "My Object #%i" % obj.id

ModelMultipleChoiceField

class ModelMultipleChoiceField(**kwargs) [source]
  • डिफ़ॉल्ट विजेट: SelectMultiple
  • खाली मान: एक खाली QuerySet (self.queryset.none ())
  • के लिए सामान्यीकृत: QuerySet मॉडल के उदाहरण।
  • मान्य करता है कि मूल्यों की दी गई सूची में प्रत्येक आईडी क्वेरीसेट में मौजूद है।
  • त्रुटि संदेश कुंजियाँ: required , list , invalid_choice , invalid_pk_value

invalid_choice संदेश हो सकती है %(value)s और invalid_pk_value संदेश हो सकती है %(pk)s , जो उचित मान से प्रतिस्थापित कर दिया जाएगा।

एक या अधिक मॉडल ऑब्जेक्ट के चयन की अनुमति देता है, जो कई-से-कई संबंधों का प्रतिनिधित्व करने के लिए उपयुक्त है। जैसा कि ModelChoiceField , आप label_from_instance ऑब्जेक्ट अभ्यावेदन को अनुकूलित करने के लिए उपयोग कर सकते हैं ।

एक एकल तर्क की आवश्यकता है:

queryset

के रूप में ही ModelChoiceField.queryset

एक वैकल्पिक तर्क लेता है:

to_field_name

के रूप में ही ModelChoiceField.to_field_name

कस्टम फ़ील्ड बनाना

यदि अंतर्निहित Field कक्षाएं आपकी आवश्यकताओं को पूरा नहीं करती हैं, तो आप आसानी से कस्टम Field कक्षाएं बना सकते हैं । ऐसा करने के लिए, बस एक उपवर्ग बनाएँ django.forms.Field । इसका एकमात्र आवश्यकताओं है कि यह एक को लागू कर रहे हैं clean() विधि और इसके कि __init__() विधि कोर तर्क से ऊपर (उल्लेख किया स्वीकार required , label , initial , widget , help_text )।

आप यह भी कस्टमाइज़ कर सकते हैं कि किसी क्षेत्र को ओवरराइड करके कैसे पहुँचा जा सकता है get_bound_field()

Original text