2012-02-02 57 views
2

比方说,我有以下类:如何查询确切的ManyToMany关系?

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

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

注:

Vote.options恰好有2项

Vote.choosen是2项的选项

的一个如何使一个查询该搜索的确切2个项目Vote.options还有Vote.choosen

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

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

回答

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) 
+0

链接过滤器工作,谢谢! – 2012-02-02 02:43:24