我有一个用户模型和一个文章模型。我希望用户只对一篇文章投票一次。所以我想创建一个投票模型,它只与用户模型相关一次,而与文章模型只相关一次。
我该怎么做?是否可以在投票模型中使用多个OneToOneField,如下所示:
class Vote(models.Model):
user_id = models.OneToOneField(User)
article_id = models.OneToOneField(Article)
vote = models.BooleanField()
我也看到了这种方法(Django. Restrict each user to only vote once):
class Vote(models.Model):
class Meta:
unique_together = (('user_id','article_id'),)
user_id = models.ForeignKey(User)
article_id = models.ForeignKey(Article)
vote = models.BooleanField()
哪一个最好?
由于
答案 0 :(得分:4)
嗯,你能做的最好的就是第二个。因为在第一篇文章中你只能在一篇文章中投一票。在第二篇文章中,您可以在一篇文章中获得多次投票,但一次投票只能与一篇文章相关。我认为这就是你想要的。