2011-09-14 94 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