2013-04-08 47 views
2

我在FormForm中創建了一個表單中的字段「phone」。我想驗證這個字段。下面是models.py代碼:驗證ModelForm的最佳方式

class UserProfile(models.Model): 
    user = models.ForeignKey(User, unique=True) 
    phone = models.CharField(max_length=20, validators=[validate_phone]) 

forms.py:

class UserProfileResetForm(ModelForm): 
    class Meta: 
     model = UserProfile 
     exclude = ('user') 

從我想通了,到目前爲止療法幾種方法來驗證從的ModelForm在Django創建的窗體。我看到他們至少3:1。 覆蓋手機UserProfileResetForm作爲RegexField 2.使用驗證器(如我現在做的) 3. UserProfileResetForm

創建clean_phone方法所以我有點困惑...做這個的最好方式是什麼?

+0

我個人會推薦驗證器方法,因爲django遵循驗證字段。如果您僅支持任何特定國家,則可以使用https://docs.djangoproject.com/en/1.3/ref/contrib/localflavor/ - localflavor等。 – karthikr 2013-04-08 02:37:41

回答

1

做你現在正在做的事情。如果您有一個可以放置在模型上的驗證程序,那麼它不僅會驗證所有模型,還會在管理界面中執行驗證。如果只在模型表單中覆蓋clean_phone,如果有特定的驗證,您只需要以這種形式執行。您可以放置​​驗證程序的級別越低,您的應用程序(和數據)就會越一致。

+0

Thx爲答案。是的,我肯定會爲此使用驗證器。現在,當我同時登錄和重置表單時,我可以爲它們使用相同的驗證器。 – spandei 2013-04-08 12:22:34