4

我想在两个外键字段上允许 null 。

但是这两个字段不应该同时为空。
实际上,必须随时设置一个。

我该如何表达?

外键引用的两个表不一样。

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 回答
0

您可以使用以下方法:

Class TestModel(models.Model):
   forgein_key_1 = models.ForeignKey(YourModel)
   forgein_key_2 = models.ForeignKey(YourOtherModel) 

并将保存方法覆盖为:

    def save(self, *args, **kargs):
        if not (self.forgein_key_1 or self.forgein_key_2):
          raise Exception("Your Custom Exception Message here")
        super(self, TestModel).save(*args, **kargs)
于 2018-08-27T08:00:23.450 回答