Django模型:外键的唯一值

罗伊特科

我正在建立一个像Instagram一样的应用程序,并试图制作一个类似的模型。每个用户都可以喜欢一个帖子,但是不可能两次都喜欢相同的帖子。

class Like(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    post = models.ForeignKey(Post, on_delete=models.CASCADE)
    created = models.DateTimeField(auto_now_add=True)

这是我的模型,但是我能够创建2个相同的对象。例如,用户1可以有2个类似对象,如发布1。

有没有办法做到这一点?

威廉·范昂塞姆

是的,您可以使用[Django-doc]and字段组合标记为唯一userpostUniqueConstraint

class Like(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    post = models.ForeignKey(Post, on_delete=models.CASCADE)
    created = models.DateTimeField(auto_now_add=True)

    class Meta:
        constraints = [
            models.UniqueConstraint(fields=['user', 'post'], name='like_once')
        ]

之前,您可以使用unique_together[Django-doc]选项

class Like(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    post = models.ForeignKey(Post, on_delete=models.CASCADE)
    created = models.DateTimeField(auto_now_add=True)

    class Meta:
        unique_together = [['user', 'post']]

注意:通常,最好使用settings.AUTH_USER_MODEL[Django-doc]来引用用户模型,而不是直接使用User模型[Django-doc]有关更多信息,请参见参考User文档的“模型”部分

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Django模型中创建一个值为值或外键的字段?

来自分类Dev

Django模型:汇总多个外键字段值的总和

来自分类Dev

Django模型中带有外键的重复值

来自分类Dev

SQLite:使外键唯一

来自分类Dev

Django模型,循环外键

来自分类Dev

Django多重外键模型

来自分类Dev

如何使相同模型的两个外键一起唯一?

来自分类Dev

如何验证模型的两个(外键)相关字段的唯一性?

来自分类Dev

DJANGO > 2.2 - 在外键 A、B 或外键 A、B、C 上唯一

来自分类Dev

Django:在模型中为用户唯一的值

来自分类Dev

从外键的外键验证唯一性

来自分类Dev

外键列的唯一约束

来自分类Dev

外键列的唯一约束

来自分类Dev

PostgreSQL中的非唯一外键?

来自分类Dev

django外键(用户)在模型中

来自分类Dev

每个外键的Django模型单个实例

来自分类Dev

Django模型中的外键数组

来自分类Dev

django用户模型公司的外键

来自分类Dev

Django模型:使用外键中的字段

来自分类Dev

Django从模型CharField引入外键

来自分类Dev

Django模型外键获取属性

来自分类Dev

Django模型外键中的属性错误

来自分类Dev

Django模型中的自动外键

来自分类Dev

Django模型中的外键数组

来自分类Dev

django用户模型公司的外键

来自分类Dev

在Django中用外键保存模型

来自分类Dev

Django多个外键模型的嵌套Json

来自分类Dev

Django从模型CharField引入外键

来自分类Dev

Django模型未设置外键对象