我想在两个外键字段上允许null。
但是这两个字段不应该同时为空 实际上,任何时候都必须设置一个。
我该如何表达?
外键引用的两个表不一样。
答案 0 :(得分:3)
您无法通过在模型字段上添加内容来实现此目的。您必须将此逻辑放在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)
答案 1 :(得分: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)