2009-07-26 12 views
5

क्या निम्नलिखित लागू करने के लिए सबसे अच्छा तरीका है के रूप में Django LocalFlavor पिन के साथ कार्य करना:एक मॉडल फील्ड

### models.py 
>>> from django.db import models 
>>> from django.contrib.auth.models import User 
# Create the client class. 
>>> class Client(models.Model): 
...  user = models.OntToOneField(User) 
...  zip = ***???***() 

### forms.py 
>>> from django.forms import ModelForm 
# Create the form class. 
>>> class ArticleForm(ModelForm): 
...  class Meta: 
...   model = Client 

मैं केवल models.py फ़ाइल संशोधनों का उपयोग US Zip Codes Field form widget/validator उपयोग करने के लिए अंतिम परिणाम प्राप्त करने के लिए कोशिश कर रहा हूँ।

### forms.py 
>>> from django.forms import ModelForm 
>>> from django.contrib.localflavor.us.forms import USZipCodeField 
# Create the form class. 
>>> class ArticleForm(ModelForm): 
...  class Meta: 
...   model = Client 
...  zip = USZipCodeField() 

नोट:: .. उर्फ ​​मैं निम्न कार्य नहीं करना चाहते हैं यह हो सकता है सबसे अच्छा तरीका के रूप में ऊपर दिखाए गए ... यदि यह मामला है यह forms.py फ़ाइल में है पूरा करने के लिए है कि , मुझे लगता है कि मुझे कस्टम मॉडल फ़ील्ड (उदाहरण के लिए, DRY?) के बजाय वहां होने का तर्क/लाभ गुम है। ढीला युग्मन?) इस परिदृश्य में models.py पर form.py के लाभों को बेहतर ढंग से समझने में मदद करने में कोई मदद की सराहना की जाएगी।

अग्रिम धन्यवाद! -Tom

उत्तर

5

एक ज़िप कोड केवल संख्याओं/अक्षरों की एक स्ट्रिंग है, इसलिए डेटाबेस में इसे संग्रहीत करने के लिए कस्टम फ़ील्ड को परिभाषित करने की आवश्यकता नहीं है। इस समय Django में कोई मॉडल-स्तरीय सत्यापन नहीं है (हालांकि इसे जोड़ने के लिए Google ग्रीष्मकालीन कोड प्रोजेक्ट है), इसलिए कस्टम मॉडल फ़ील्ड कुछ भी नहीं जोड़ पाएगा। सत्यापन फॉर्म स्तर पर आता है, यही कारण है कि एक कस्टम फॉर्म फ़ील्ड है।

0

यह प्रश्न पूछने पर यह उपलब्ध नहीं होना चाहिए था, लेकिन django 1.4 में django.contrib.localflavor.us.models.USPostalCodeField() है, जो आपको लगता है कि आपको क्या चाहिए, लेकिन यह उन 2-अक्षर राज्य संक्षेपों को संग्रहीत करने के लिए डिज़ाइन किया गया है, ज़िप कोड नहीं, दुर्भाग्य से।

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