2012-02-02 101 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