我有个模特:

class Zone(models.Model):
    name = models.CharField(max_length=128)
    users = models.ManyToManyField(User, related_name='zones', null=True, blank=True)

我需要按照这样的思路来建设一个过滤:

u = User.objects.filter(...zones contains a particular zone...)

它必须是过滤上的用户,并且必须是单个过滤参数.这样做的原因是,我正在构造一个指向过滤的url查询字符串,管理员用户更改列表:

看起来应该很简单,但我的大脑不配合!

推荐答案

只是重复托马兹说的话.

many-to-manymany-to-one测试中,有许多FOO__in=...式过滤器的例子.以下是针对具体问题的语法:

users_in_1zone = User.objects.filter(zones__id=<id1>)
# same thing but using in
users_in_1zone = User.objects.filter(zones__in=[<id1>])

# filtering on a few zones, by id
users_in_zones = User.objects.filter(zones__in=[<id1>, <id2>, <id3>])
# and by zone object (object gets converted to pk under the covers)
users_in_zones = User.objects.filter(zones__in=[zone1, zone2, zone3])

使用querysets时,到处都使用双下划线(__)语法.

Django相关问答推荐

管理器不能通过对象上的对象实例访问.保存()

Django-Values()并按月分组

当前路径 **/POST 与其中任何一个都不匹配

Django基于查询集动态筛选字段名称

Django Inline Tabular admin:删除一个不工作的对象

Django 关系嵌套related_name

获取 Django Rest API 的第一个和最后一个相关对象

如何重命名标准 django-registration 模板的名称

AttributeError:模块rest_framework.serializers在 Swagger 中的 Django 中没有属性NullBooleanField

Django ORM 查询优化问题

使用 south 重构具有继承的 Django 模型

使用 Django 和 South 重命名应用程序

如何从 json 模式创建表单?

Django 视图 - 首先从调用应用程序的目录加载模板

如何在 Django 测试框架中修改会话

Python/Django:从 values_list() 创建一个更简单的列表

UnicodeEncodeError:ascii编解码器无法编码字符

如何查询名称包含python列表中任何单词的模型?

有没有一种简单的方法可以从 CharField 填充 SlugField?

如何从 django 请求中获取完整的 url