Django:如何检查用户是否已在ManyToManyField上投票?
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
。