Django 的唯一外键对

Posted

技术标签:

【中文标题】Django 的唯一外键对【英文标题】:Unique foreign key pairs with Django 【发布时间】:2011-05-30 04:31:53 【问题描述】:

我有三个模型:productsusersreviews

评论与产品和用户的关联如下:

class Review(models.Model):
    product = models.ForeignKey(Product)    
    user = models.ForeignKey(User)
    review_text = models.TextField()
    creation_date = models.DateTimeField(auto_now_add=True)

我希望每个用户对每个产品只提交一条评论。实现这一目标的推荐方法是什么?通过模型,通过验证,还是别的什么?我对 Django/Python 很陌生。谢谢。

【问题讨论】:

【参考方案1】:

使用unique_together 确保每个用户/产品组合都是唯一的:

class Review(models.Model):

  class Meta:

    unique_together = ['user', 'product']

  user = models.ForeignKey(User)
  product = models.ForeignKey(Product)

【讨论】:

以上是关于Django 的唯一外键对的主要内容,如果未能解决你的问题,请参考以下文章

父表子表 主外键关系

Django基础五之django模型层多表操作

外键为啥必须是唯一键?为啥至少唯一键才能作为其他表的外键?不唯一为啥不可以?

外键是唯一的吗?

django 插入外键值思路

Django,从反向外键查询添加数据(外键加入过滤器)