2017-02-23 123 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文檔,其中詳細介紹了這個問題。 –