我想在两个外键字段上允许 null 。
但是这两个字段不应该同时为空。
实际上,必须随时设置一个。
我该如何表达?
外键引用的两个表不一样。
我想在两个外键字段上允许 null 。
但是这两个字段不应该同时为空。
实际上,必须随时设置一个。
我该如何表达?
外键引用的两个表不一样。
你不能通过在模型字段上添加一些东西来实现这一点。你必须把这个逻辑放在你的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)
您可以使用以下方法:
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)