2017-02-23 79 views
1

发生了一些奇怪的事情。比方说,我有一个字段定义为:Django表单验证冲突

Project_name = models.CharField(max_length=250, unique=True) 

所以Project_name必须有一个独特的价值,否则它会抛出一个错误。然后我想添加其他验证检查。所以在我的forms.py

def clean(self): 
    data = self.cleaned_data 
    if data['team_member2'] == data['team_member3']: 
     raise ValidationError("Can't have duplicate team members") 

但是,一旦我加入的unique运营商停止工作由于某种原因,这个功能。有任何想法吗?

回答

1

您在覆盖时不会调用clean超类的方法。

尝试这种情况:

def clean(self): 
    data = super(FormClass, self).clean() 
    if data['team_member2'] == data['team_member3']: 
     raise ValidationError("Can't have duplicate team members") 
    return data 

documentation

呼叫到超级(的ContactForm,自我)清洁机壳()在示例代码可确保在父类的任何验证逻辑保持。

+0

圣!它的工作,你能告诉我这背后的逻辑吗? – anderish

+1

@AndyXu我已经添加了一个链接到Django文档,其中详细介绍了这个问题。 –