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

1 投票
2 回答
514 浏览
提问于 2025-04-17 20:05
    class Punch(models.Model):
        ring            = models.ForeignKey(Ring)
        voters           = models.ManyToManyField(settings.AUTH_USER_MODEL)

    class Ring(models.Model):
        category        = xxxx

我有一个包含多对多关系的类。

每个用户只能对每个投票项目投一次票。

现在我需要知道一个用户是否已经对某个特定的投票项目投过票。

我该怎么做呢?

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

我在阅读文档时想到了这个方法:

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

但是这个方法给我的是用户对所有投票项目投票的总次数。我其实只想知道他是否对某个特定的投票项目投过票。

我仍然在努力解决这个问题。

谢谢大家的帮助。

2 个回答

2

多对多的关系可以通过查找来进行查询,这种查找可以跨越不同的关系。

0

你可以试试这个:

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

你也可以把 filter 换成一个用 try-expect 包裹的 get

撰写回答