2009-07-26 20 views
5

olarak Django LocalFlavor Zip ile çalışma: Sadece models.py dosyasını modifikasyonlarına kullanarak US Zip Codes Field form widget/validator kullanmak sonuçta almaya çalışıyorumaşağıdaki uygulamak için en iyi yolu nedir Model Alan

### 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 

.

### 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() 

nOT: .. aka ben aşağıdakileri yapmak istemiyorum o İYİ yolu durum böyleyse ... yukarıda gösterildiği gibi forms.py dosyasında olduğunu başarmak olduğunu olabilir Sanırım, özel bir model alanı yerine (örneğin, DRY?) Yerine oraya sahip olmanın argümanını/faydasını kaçırıyorum. gevşek bağlama?) Bu senaryoda, model.py'nin forms.py'nin faydalarını daha iyi anlama konusunda yardımcı olacak her türlü yardım büyük ölçüde takdir edilecektir.

Şimdiden teşekkürler! -Tom

cevap

5

Bir posta kodu yalnızca bir sayı/harf dizesidir, bu nedenle veritabanında saklamak için özel bir alan tanımlamaya gerek yoktur. Şu anda Django'da model düzeyinde bir doğrulama yoktur (ekleyeceğiniz bir Google Code of Code projesi olmasına rağmen), bu nedenle özel bir model alanı hiçbir şey eklemez. Doğrulama, form düzeyinde gelir, bu yüzden özel form alanı vardır.

0

Soruyu sorduğunuzda bu uygun olmamalıdır, ancak django 1.4, gereksinim duyduğunuz şeyi yapacağınızı düşünebileceğiniz django.contrib.localflavor.us.models.USPostalCodeField()'a sahiptir, ancak Zip kodları değil, 2 harfli durum kısaltmaları depolamak için tasarlanmıştır. ne yazık ki.

İlgili konular