Django中的ManyToManyField初始化

时间:2015-05-14 10:36:10

标签: django manytomanyfield

我有以下型号:

class Comment(models.Model):
    uuid = models.CharField(max_length=40, default='random')
    news = models.ForeignKey('News')
    user = models.OneToOneField(User, primary_key=True) # ForeignKey('User')
    text = models.CharField(max_length=300, null=True)
    upvotes = models.PositiveIntegerField(default=0)
    downvotes = models.PositiveIntegerField(default=0)
    votes = models.ManyToManyField(User, through='Vote', related_name='votes_table')


class Vote(models.Model):
    cmt = models.ForeignKey(Comment)
    user = models.ForeignKey(User)
    vote_type = models.SmallIntegerField(default=0) # vote_type is +1 for upvote & -1 for downvote

当用户提交新评论时,我会初始化一个新评论,如下所示:c = Comment(uuid=uuid.uuid4(),news=n, user=request.user, text=comment_text)。现在的问题是,当我打印c.votes.exists()时,它是True。这个评论c如何在comments_votes表中有一个条目?

1 个答案:

答案 0 :(得分:0)

生成的'sql':u'SELECT(1)AS“a”FROM“auth_user”INNER JOIN“app_vote”ON(“auth_user”。“id”=“app_vote”。“user_id”)WHERE“app_vote” 。“cmt_id”= 62 LIMIT 1'

由于Comment的主键是User,c.votes.exists()实际上会检查用户是否有任何投票,而不是检查评论是否有任何投票。

P.S。如果您按注释uuid而不是pk

进行过滤,则可以使用投票查询获得评论投票