2017-09-18 2 views
1

フィールドfield1field2のモデルMyModelがあります。私はこれらの2つのフィールドのどちらかを要求したい。これどうやってするの?djangoモデル定義で2つのフィールドの1つを必要とする具体的な方法

class MyModel(models.Model): 
    field1 = models.TextField(?) 
    field2 = models.TextField(?) 

私は見ていないが、オーバーライドclean関数法、忘れてしまった特定の、ベストプラクティスの方法を探しています。私はいくつかの関数をオーバーライドするメソッドを覚えていますが、私はそれがcleanだとは思わない。事前

+1

を使用コメント* *これを行う方法です。 –

答えて

1

として

おかげで `clean`をオーバーライドクリーン

class MyModel(models.Model): 
    field1 = models.TextField(blank=True) 
    field2 = models.TextField(blank=True) 

    def clean(self): 
     if not self.field1 and not self.field2: # This will check for None or Empty 
      raise ValidationError({'field1': _('Even one of field1 or field2 should have a value.')}) 
+0

私はこれをハッキーな方法と考えています。 –

+1

@Mike Johnson:説明してください – Serjik

+0

@MikeJohnsonそれはハッキーではない、あなたが望むものを達成する方法です。 –

関連する問題