2013-04-08 59 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