2017-02-23 16 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スーパークラスのメソッドを呼び出すことはありません。

これを試してみてください:documentationから

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 

:サンプルコードでは

コールにスーパー(のContactForm、自己).clean()を確実に親クラスのいずれかの検証ロジック維持されています。

+0

Holy!それは働いた、あなたは私の後ろに論理を教えてくださいできますか? – anderish

+1

@AndyXu問題を詳細にカバーするDjangoドキュメントへのリンクを追加しました。 –

関連する問題