使用Q的Django查询

艾迪·瓦尔维德(EDDIE VALVERDE)

我有以下

项目模型:

class Project(models.Model):
    creator = models.ForeignKeyField(settings.AUTH_USER_MODEL)
    name = models.CharField(max_lenght=200)
    co_workers = models.ManyToManyField(settings.AUTH_USER_MODEL)

表用户:

id_user username
 1       Frank
 2       Steve
 3       Eddie

表项目:

id_project project_name id_creator
 1          project 1       1     
 2          project 2       1
 3          project 3       1
 4          project 4       1   

表projects_users(m2m)该表适用于同一项目的其他工作人员:

id_user  id_project
 2         1
 3         1
 2         2
 3         2

当我进行以下查询时,我得到:

>>>Project.objects.filter(creator=1)

[project 1, project 2, project 3, project 4]

>>>Project.objects.filter(co_workers=1)

[]

很好,但是当我输入:

>>>Project.objects.filter(Q(co_workers=1)| Q(creator=1))

[Project 1, Project 1, Project 2, Project 2, Project 3, Project 4]

我期待得到:

[项目1,项目2,项目3,项目4]

我究竟做错了什么?

巴蒂·林赛(Buddy Lindsey)

你得到的原因Project 1Project 2两次是因为你的or条件仍与任何查询正确评估。您需要distinct()在查询集的末尾使用该方法。

Project.objects.filter(Q(co_workers=1)| Q(creator=1)).distinct()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Django〜Q查询

来自分类Dev

Django中的Q查询

来自分类Dev

使用django进行计数和Q / F查询

来自分类Dev

使用Django的Q查询过滤多对多关系

来自分类Dev

使用Q对象在Django中动态构建复杂查询

来自分类Dev

Django Q错误的查询逻辑

来自分类Dev

Django Q对象(复杂查询)是否安全?

来自分类Dev

一个查询可以使用django objects.filter Q()多少次?

来自分类Dev

如何在Q(kdb)中使用“ IN”查询?

来自分类Dev

Django查询中的oring Q对象的性能影响

来自分类Dev

Django Q对象和M2M查询

来自分类Dev

按Q()或匹配项的数量对Django查询结果进行排序

来自分类Dev

Django:为相关表构建动态Q查询

来自分类Dev

Django结合两个不带Q的查询

来自分类Dev

Django Q对象和M2M查询

来自分类Dev

Django查询过滤器参数和Q

来自分类Dev

使用Django查询优化

来自分类Dev

使用Django创建查询

来自分类Dev

使用列表的 Django 查询

来自分类Dev

如何在 Django 中使用 Q 对象

来自分类Dev

使用 Django 的 Q 从 CBV 获取搜索结果

来自分类Dev

使用大型子查询优化 Django 查询

来自分类Dev

Django添加Q过滤器以在相关对象存在时进行查询,条件查询

来自分类Dev

使用MongoEngine和Q构造查询会引发InvalidQueryError

来自分类Dev

Django模型查询使用联接

来自分类Dev

使用Django查询的内置方法

来自分类Dev

Mongoexport -q ISODate查询

来自分类Dev

Django Q无法使用字符串和DRF

来自分类Dev

如何在Django ORM中使用Q&Q修复排除项