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
.
我的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
.