2011-09-14 125 views
0

我有模式「:如何過濾manytomany領域?

class MyModel(models.Model): 
    field1 = ... 
    sites = models.ManyToManyField(Site, blank = True, null=True) 

,我想過濾器(站點是一個正確的站點對象):

qs = MyModel.objects.filter(field1=thing, sites__id=site.id) 

但是,這並不工作,我得到的所有對象,即使是那些誰沒有在表中的條目

或我想:

qs = MyModel.objects.filter(field1=thing, sites__in=site) 

但我什麼也沒得到。何去做?

+0

我認爲sites__in需要一個列表 – szaman

回答

2

做,如果我理解你的問題的權利,你有一個具體的site和你通過該網站試圖filter。然後,你應該過濾這樣的:

site = Site.objects.get(pk=1) 

mymodel_for_site = MyModel.objects.filter(field1=thing, sites=site) 

這應該得到所有爲MyModel實例特定site

-1

嘗試通過爲MyModel對象,即:

object = MyModel.objects.get(field1=thing) 
qs = object.sites.all() 

檢查Django的docs

+0

我有很多目標,我必須使用過濾器,而不是得到。我想讓對象分配到特定的站點。 – Nips

+0

這將給所有的網站,它不會根據特定的網站過濾 – Pannu

+0

好吧,你是對的,對不起,錯誤 – szaman