繁体   English   中英

unique_together 可以避免 Django 中的空值吗

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM