2012-07-28 12 views
6

में मेरे पास एक फॉर्म में टैग सबमिट करने की क्षमता है। जब फ़ॉर्म सबमिट किया जाता, मैं देख:Django सरणी मान

tags=['3','4','5']

टैग मूल्यों क्या उपयोगकर्ता के लिए चुना गया है पहचान पत्र हैं। मैं request.POST ऑब्जेक्ट से मान प्राप्त करने में सक्षम हूं और सबकुछ ठीक है। समस्या यह है कि उपयोगकर्ता को एक टैग का चयन करना होगा। और मैं एक Django रूप में सत्यापन करना चाहता हूं, लेकिन मुझे यकीन नहीं है कि django रूप में आपूर्ति करने के लिए किस प्रकार का फॉर्म फ़ील्ड मूल्य है? आम तौर पर मैं CharField, DateField, आदि का उपयोग करता हूं लेकिन सरणी मान प्राप्त करने के लिए क्या मौजूद है? और फिर मैं इसके लिए clean फ़ंक्शन प्रदान कर सकता हूं। धन्यवाद!

उत्तर

4

django.forms.MultipleChoiceField() आज़माएं। https://docs.djangoproject.com/en/dev/ref/forms/fields/#multiplechoicefield

known_tags = (
    (1, 'Choice 1'), (2, 'Choice 2'), (3, 'Choice 3'), 
    (4, 'Choice 4'), (5, 'Choice 5')) 

class MyForm(django.forms.Form): 
    tags = django.forms.MultipleChoiceField(choices=known_tags, required=True) 

संपादित करें 1 देखें:

कि आप क्या करना चाहते हैं एक सरणी में एक पाठ क्षेत्र चालू करने के लिए है, तो ...

class MyForm(django.forms.Form): 
    tags = django.forms.CharField(required=True) 

    def clean_tags(self): 
     """Split the tags string on whitespace and return a list""" 
     return self.cleaned_data['tags'].strip().split() 
+1

नहीं, यह काम नहीं करेगा। मेरे पास "ज्ञात टैग" का एक सेट नहीं है। मेरे पास डेटाबेस में एक टेबल है, इसलिए टैग उस तालिका पर कुछ भी हो सकता है। – KVISH

+1

विकल्प tuple सिर्फ एक उदाहरण है। आप डेटा को अपने डीबी से खींच सकते हैं और सूची बना सकते हैं। या, क्या आप कह रहे हैं कि आप उपयोगकर्ताओं को टेक्स्ट दर्ज करने की अनुमति देते हैं (सूची में से चुनने के बजाय)? –

+0

हाँ, उपयोगकर्ता टेक्स्ट दर्ज करने में सक्षम हैं ... क्योंकि ये मान टैग से हैं। – KVISH

संबंधित मुद्दे