我有以下型号:
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
表中有一个条目?
答案 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
进行过滤,则可以使用投票查询获得评论投票