2015-10-19 63 views
2

我有一个用户模型和一个文章模型。我希望用户只能投一次文章。所以我想创建一个只与用户模型关联一次的投票模型,并且只与文章模型关联一次。Django。多个OneToOneField在同一模型中

我该怎么做?是否有可能使用多个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() 

哪一个是最好的?

谢谢

+1

作为何塞罗梅罗在他的回答中说,第二个是最好的,因为第一个是错的,它并没有达到你想要的 – Anentropic

回答

4

那么,你可以做的最好的是第二个。因为在第一个文章中你只能有一个投票。在第二篇文章中,您可以在一篇文章中获得很多投票,但一个投票只能与一篇文章相关。我认为是你想要的。

相关问题