如何查询确切的ManyToMany关系?

时间:2012-02-02 02:24:14

标签: django many-to-many

假设我有以下课程:

class Votable(models.Model):
    name = ...

class Vote(models.Model):
    options = models.ManyToManyField(Votable, related_name='+')
    choosen = models.ForeignKey(Votable)

注意:

Vote.options正好有2件

Vote.choosen是两个选项之一

如何创建搜索Vote.optionsVote.choosen的确切2项的查询?

我尝试Vote.objects.get(options=[1,2], choosen=1),但它返回:

TypeError: int() argument must be a string or a number, not 'list'

1 个答案:

答案 0 :(得分:3)

您必须链接过滤器才能获得同时具有选项1和2的投票对象。

Vote.objects.filter(options=1).filter(options=2).get(choosen=1)

如果您想要具有options 1或2的投票对象,则使用__in语法:

Vote.objects.get(options__in=[1, 2], choosen=1)