2011-06-21 9 views
7

निम्नलिखित मेरे टेम्पलेट में किसी फ़ील्ड के बजाय दिखाई देता है।django localflavors यूएस

<django.contrib.localflavor.us.forms.USStateSelect object at 0x92b136c> 

मेरे टेम्पलेट

{{ form.state }} 

क्या समस्या हो सकती है है?

class RegistrationForm(forms.Form): 

    first_name = forms.CharField(max_length=20) 
    last_name = forms.CharField(max_length=20) 
    phone = USPhoneNumberField() 
    address1 = forms.CharField(max_length=45) 
    address2 = forms.CharField(max_length=45) 
    city = forms.CharField(max_length=50) 
    state = USStateSelect() 
    zip = USZipCodeField() 

वैसे भी क्या मैं राज्य और ज़िप वैकल्पिक बना सकता हूं?

+0

क्या आप अपनी फॉर्म क्लास के लिए कोड पोस्ट कर सकते हैं? –

+0

ईड्स देखें – Eva611

उत्तर

9

एक ड्रॉप डाउन सूची में विकल्पों को सीमित करने के लिए, अपने मॉडल में us.us_states.STATE_CHOICES का उपयोग करें, और अपने फॉर्म में us.forms.USStateSelect() के बजाय us.forms.USStateField() का उपयोग करें।

किसी फ़ॉर्म में फ़ील्ड को वैकल्पिक बनाने के लिए, मॉडल में उस क्षेत्र में blank = True जोड़ें।

from django.contrib.localflavor.us.us_states import STATE_CHOICES 
from django.contrib.localflavor.us.models import USStateField 

class ExampleLocation(models.Model): 
    address1 = models.CharField(max_length=45) #this is not optional in a form 
    address2 = models.CharField(max_length=45, blank = True) #this is made optional 
    state = USStateField(choices = STATE_CHOICES) 

के बजाय STATE_CHOICES, वहाँ कई विकल्प आप in the localflavor documentation पा सकते हैं। STATE_CHOICES सबसे समावेशी है, लेकिन यह आपकी इच्छा नहीं हो सकता है। यदि आप केवल 50 राज्यों, प्लस डीसी चाहते हैं, तो US_STATES का उपयोग करें।


इस उत्तर आप ModelForms उपयोग कर रहे हैं मान लिया गया है। यदि आप नहीं हैं, तो आपको होना चाहिए। जब आप अपने मॉडल बनाया है, तो आप सूखी का पालन करना चाहिए और इतने की तरह बुनियादी रूपों बनाने के लिए:

from django.forms import ModelForm 

class ExampleForm(ModelForm): 
    class Meta: 
     model = ExampleLocation 

और यह अपने मॉडल से अपने खेतों इनहेरिट करती है। यदि आप class Meta विकल्पों जैसे fields या exclude के साथ पूरे मॉडल को नहीं चाहते हैं, तो आप कौन से फ़ील्ड उपलब्ध हैं अनुकूलित कर सकते हैं। मॉडल फॉर्म किसी भी अन्य रूप के रूप में अनुकूलन योग्य हैं, वे बस आपके मॉडल के फ़ील्ड की धारणा से शुरू होते हैं।

+0

जब मैं यूएसस्टेटफ़ील्ड वैकल्पिक – Eva611

+0

करता हूं तो यह त्रुटि उत्पन्न करता है क्या आप * मॉडल *, या * फॉर्म * में यूएसस्टेटफ़िल्ल्ड वैकल्पिक बना रहे हैं? यदि यह सिर्फ एक रूप में है, और यह किसी मॉडल से संबद्ध नहीं है, तो 'blank = True' के बजाय फ़ॉर्म में 'आवश्यक = गलत' का उपयोग करें। ध्यान रखें, अगर आपके पास मॉडल में 'blank = True' नहीं है, और आप उस फ़ील्ड के बिना एक नई प्रविष्टि जोड़ने का प्रयास करते हैं, तो आपको एक त्रुटि प्राप्त होगी। –

+1

इसे यूएसस्टेट चयन क्यों कहा जाता है यदि यह यूएस स्टेट विकल्पों के ड्रॉप डाउन चयन को प्रस्तुत नहीं करता है? या क्या मैं कुछ न कुछ भूल रहा हूं। – Chris

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