Django OneToOneField 或外键?

Django OneToOneField or ForeignKey?

我的models.py:

class User:
  // fields ...

class Post:
  // fields ...

class Comment:
  news = models.ForeignKey(Post)
  user = models.???(User)

每个 Post 可以有任意数量的 Comment但是对于每个 Post,我希望用户只有一个 Comment 我该如何建模?

我不能做 user = models.OneToOneField(User) 因为在那种情况下 User 将只能在所有 Post 中评论一次。

我也不能做 user = models.ForeignKey(User) 因为在那种情况下 User 将能够 post 他喜欢在单个 Post 上发表任意多的评论,这不是我想要的是。

您对 unique_together 模型元选项感兴趣:

Sets of field names that, taken together, must be unique.

class Comment(models.Model):
    news = models.ForeignKey(Post)
    user = models.ForeignKey(User)
    # ...
    class Meta:
        unique_together = ('news', 'user')

您的 user 字段可以是 ForeignKey.