Django:如何检查用户是否已经在ManyToManyField上投票?

时间:2013-03-23 21:08:42

标签: python django django-1.5

    class Punch(models.Model):
        ring            = models.ForeignKey(Ring)
        voters           = models.ManyToManyField(settings.AUTH_USER_MODEL)

    class Ring(models.Model):
        category        = xxxx

我有一个带有ManyToManyField的类。

每个用户应该只能为每次打卡投票一次。 现在我需要知道一个用户是否已经投了特定的一拳。

我该怎么做?

punch.voters.filter(??? = request.user)

阅读我提出的文件:

voters = get_user_model().objects.filter(punch__voters=request.user)

但是这给了我一个用户投票支持所有拳击的总次数。但我只对一个特别的打击感兴趣,看看他是否已经投了赞成票。

我仍在努力解决这个问题。 谢谢你的帮助

2 个答案:

答案 0 :(得分:2)

可以使用查找across relationships查询多对多关系。

答案 1 :(得分:0)

你可以试试这个:

punch.voters.filter(pk=request.user.pk)

您还可以将filter替换为try-expect包裹get