如何用manytomany字段过滤?

时间:2011-09-14 08:21:37

标签: django django-models

我有模特“:

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

我希望过滤(site是一个正确的Site对象):

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

但这不起作用。我得到了所有的对象,甚至是那些没有参加表格的人。

或者我试过了:

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

但我一无所获。何你这样做?

2 个答案:

答案 0 :(得分:2)

如果我理解您的问题,那么您有一个特定的site,并且您尝试filter该网站。然后你应该像这样过滤:

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

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

这应该获取特定site

的所有MyModel实例

答案 1 :(得分:-1)

尝试通过MyModel对象创建它,即:

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

检查django docs