[英]Can unique_together avoid nulls in Django
我使用 django 和 Sql server 作为数据库。 我有一个使用unique_together
带有多个主键的unique_together
class Attribute_tmp(models.Model):
useridtmp = models.ForeignKey(User_tmp, on_delete=models.CASCADE, blank =True, null = True)
userid = models.ForeignKey(User, on_delete=models.CASCADE, blank =True, null = True)
fk_str = models.ForeignKey(Stream, on_delete=models.CASCADE)
class Meta:
unique_together = (('userid', 'fk_str'),('useridtmp', 'fk_str'))
因此,当我在useridtmp
为空时添加此表的对象时,它不起作用,因为我将有一个重复的键。
我的问题是如何避免空值。
谢谢
你试过这个吗?
class Meta:
constraints = [
models.UniqueConstraint(fields=['userid', 'fk_str'], name='name of constraint'),
models.UniqueConstraint(fields=['useridtmp', 'fk_str'], name='another name of constraint')
]
由于您的 ForeignKey 字段中有 null=True 和 blank=True ,因此 db 存储空值是合理的。
如果在任何情况下,两个 ForeignKey 都不应该为 null,则可以将 null 和 blank 标记为 false。 只需将它们从字段设置中删除即可,因为它们默认设置为 false。 您可能需要重新创建数据库才能使新设置生效。
然后, unique_together 不会有空值问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.