Django 2.1 - PostgreSQL specific form fields and widgets

PostgreSQL विशिष्ट प्रपत्र फ़ील्ड और विजेट




django

PostgreSQL विशिष्ट प्रपत्र फ़ील्ड और विजेट

ये सभी फ़ील्ड और विजेट django.contrib.postgres.forms मॉड्यूल से उपलब्ध हैं।

खेत

SimpleArrayField

class SimpleArrayField(base_field, delimiter=', ', max_length=None, min_length=None) [source]

एक साधारण क्षेत्र जो एक सरणी में मैप करता है। यह एक HTML <input> द्वारा दर्शाया गया है।

base_field

यह एक आवश्यक तर्क है।

यह सरणी के लिए अंतर्निहित प्रपत्र फ़ील्ड निर्दिष्ट करता है। यह किसी भी HTML को रेंडर करने के लिए उपयोग नहीं किया जाता है, लेकिन इसका उपयोग प्रस्तुत डेटा को संसाधित करने और इसे मान्य करने के लिए किया जाता है। उदाहरण के लिए:

>>> from django import forms
>>> from django.contrib.postgres.forms import SimpleArrayField

>>> class NumberListForm(forms.Form):
...     numbers = SimpleArrayField(forms.IntegerField())

>>> form = NumberListForm({'numbers': '1,2,3'})
>>> form.is_valid()
True
>>> form.cleaned_data
{'numbers': [1, 2, 3]}

>>> form = NumberListForm({'numbers': '1,2,a'})
>>> form.is_valid()
False
delimiter

यह एक वैकल्पिक तर्क है, जो अल्पविराम से चूकता है:। इस मान का उपयोग प्रस्तुत डेटा को विभाजित करने के लिए किया जाता है। यह आपको बहुआयामी डेटा के लिए SimpleArrayField श्रृंखला की अनुमति देता है:

>>> from django import forms
>>> from django.contrib.postgres.forms import SimpleArrayField

>>> class GridForm(forms.Form):
...     places = SimpleArrayField(SimpleArrayField(IntegerField()), delimiter='|')

>>> form = GridForm({'places': '1,2|2,1|4,3'})
>>> form.is_valid()
True
>>> form.cleaned_data
{'places': [[1, 2], [2, 1], [4, 3]]}

ध्यान दें

फ़ील्ड सीमांकक से बचने का समर्थन नहीं करता है, इसलिए उन मामलों में सावधान रहें जहां सीमांकक अंतर्निहित क्षेत्र में एक वैध चरित्र है। सीमांकक को केवल एक वर्ण होने की आवश्यकता नहीं है।

max_length

यह एक वैकल्पिक तर्क है जो यह पुष्टि करता है कि सरणी निर्दिष्ट लंबाई से अधिक नहीं है।

min_length

यह एक वैकल्पिक तर्क है जो पुष्टि करता है कि सरणी कम से कम निर्दिष्ट लंबाई तक पहुंचती है।

उपयोगकर्ता के अनुकूल रूप

SimpleArrayField ज्यादातर मामलों में उपयोगकर्ता के अनुकूल नहीं है, हालांकि यह सर्वर को प्रस्तुत करने के लिए क्लाइंट-साइड विजेट से डेटा को प्रारूपित करने का एक उपयोगी तरीका है।

SplitArrayField

class SplitArrayField(base_field, size, remove_trailing_nulls=False) [source]

यह फ़ील्ड अंतर्निहित फ़ील्ड को एक निश्चित संख्या में पुन: उत्पन्न करके सरणियों को संभालती है।

base_field

यह एक आवश्यक तर्क है। यह प्रपत्र फ़ील्ड को दोहराया जाना निर्दिष्ट करता है।

size

यह उस समय की निश्चित संख्या है जब अंतर्निहित फ़ील्ड का उपयोग किया जाएगा।

remove_trailing_nulls

डिफ़ॉल्ट रूप से, यह False सेट है। जब False , दोहराया फ़ील्ड से प्रत्येक मान संग्रहीत किया जाता है। True सेट होने पर, कोई भी अनुगामी मान जो रिक्त है, परिणाम से छीन लिया जाएगा। यदि अंतर्निहित फ़ील्ड के लिए required=True , लेकिन remove_trailing_nulls True , तो शून्य मान केवल अंत में अनुमत हैं, और छीन लिया जाएगा।

कुछ उदाहरण:

SplitArrayField(IntegerField(required=True), size=3, remove_trailing_nulls=False)

['1', '2', '3']  # -> [1, 2, 3]
['1', '2', '']  # -> ValidationError - third entry required.
['1', '', '3']  # -> ValidationError - second entry required.
['', '2', '']  # -> ValidationError - first and third entries required.

SplitArrayField(IntegerField(required=False), size=3, remove_trailing_nulls=False)

['1', '2', '3']  # -> [1, 2, 3]
['1', '2', '']  # -> [1, 2, None]
['1', '', '3']  # -> [1, None, 3]
['', '2', '']  # -> [None, 2, None]

SplitArrayField(IntegerField(required=True), size=3, remove_trailing_nulls=True)

['1', '2', '3']  # -> [1, 2, 3]
['1', '2', '']  # -> [1, 2]
['1', '', '3']  # -> ValidationError - second entry required.
['', '2', '']  # -> ValidationError - first entry required.

SplitArrayField(IntegerField(required=False), size=3, remove_trailing_nulls=True)

['1', '2', '3']  # -> [1, 2, 3]
['1', '2', '']  # -> [1, 2]
['1', '', '3']  # -> [1, None, 3]
['', '2', '']  # -> [None, 2]

HStoreField

class HStoreField [source]

एक क्षेत्र जो JSON स्वीकार करता है HStoreField एक HStoreField लिए डेटा इनकोड करता है। यह सभी मानों (नल को छोड़कर) को तार के लिए रखता है। यह एक HTML <textarea> द्वारा दर्शाया गया है।

उपयोगकर्ता के अनुकूल रूप

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

ध्यान दें

अवसरों पर उन कुंजियों की आवश्यकता या प्रतिबंधित करना उपयोगी हो सकता है जो किसी दिए गए क्षेत्र के लिए मान्य हैं। यह KeysValidator का उपयोग करके किया जा सकता है।

JSONField

class JSONField [source]

एक क्षेत्र जो JSON को स्वीकार करता है वह JSONField डेटा को एनकोड करता है। यह एक HTML <textarea> द्वारा दर्शाया गया है।

उपयोगकर्ता के अनुकूल रूप

JSONField अधिकांश मामलों में विशेष रूप से उपयोगकर्ता के अनुकूल नहीं है, हालांकि यह सर्वर को प्रस्तुत करने के लिए क्लाइंट-साइड विजेट से डेटा को प्रारूपित करने का एक उपयोगी तरीका है।

रेंज फील्ड्स

फ़ील्ड्स का यह समूह श्रेणी डेटा को स्वीकार करने के लिए समान कार्यक्षमता साझा करता है। वे MultiValueField पर आधारित हैं। वे एक लोप किए गए मान को एक अनबाउंड श्रेणी के रूप में मानते हैं। वे यह भी मान्य करते हैं कि निचली सीमा ऊपरी सीमा से अधिक नहीं है। ये सभी क्षेत्र RangeWidget उपयोग RangeWidget

IntegerRangeField

class IntegerRangeField [source]

IntegerField आधार पर और इसके इनपुट को NumericRange में NumericRange IntegerRangeField और BigIntegerRangeField लिए डिफ़ॉल्ट।

FloatRangeField

class FloatRangeField [source]

FloatField आधार पर और इसके इनपुट को NumericRange में NumericRange FloatRangeField लिए डिफ़ॉल्ट।

DateTimeRangeField

class DateTimeRangeField [source]

DateTimeField पर आधारित और DateTimeTZRange में इसके इनपुट का अनुवाद करता है। DateTimeRangeField लिए डिफ़ॉल्ट।

DateRangeField

class DateRangeField [source]

DateField आधार पर और DateRange में इसके इनपुट का अनुवाद करता है। DateRangeField लिए डिफ़ॉल्ट।

विजेट

RangeWidget

class RangeWidget(base_widget, attrs=None) [source]

रेंज के सभी क्षेत्रों में उपयोग किए जाने वाले विजेट। MultiWidget पर आधारित है।

RangeWidget में एक आवश्यक तर्क है:

base_widget

RangeWidget में RangeWidget 2-टपल शामिल base_widget

decompress(value) [source]

किसी फ़ील्ड का एकल "संकुचित" मान लेता है, उदाहरण के लिए एक DateRangeField , और एक tuple का प्रतिनिधित्व करता है और निचले और ऊपरी बाउंड को लौटाता है।