4

2 つの外部キー フィールドで null を許可したいと思います。

ただし、2 つのフィールドを同時に null にすることはできません。
実際には、常に 1 つだけを設定する必要があります。

これをどのように表現すればよいでしょうか。

外部キーが参照する 2 つのテーブルが同じではありません。

4

2 に答える 2

4

モデルフィールドに何かを追加しても、これを達成することはできません。このロジックを に配置する必要がありますsave()

class MyModel(models.Model):
    fk1 = models.ForeignKey(Some, null=True)
    fk2 = models.ForeignKey(Other, null=True)

    def save(self, *args, **kwargs):
       if not fk1 and not fk2:
           raise Exception("You can't leave both fields as null")
       super(self, MyModel).save(*args, **kwargs)
于 2013-07-12T06:02:12.147 に答える