Django 查询问题

Posted

技术标签:

【中文标题】Django 查询问题【英文标题】:Django Querying Question 【发布时间】:2011-02-04 03:09:02 【问题描述】:

如果我在 Django 中有两个不同的 QuerySet,它们都表示具有相同模型的多对多关系,我将如何找到交叉点?

【问题讨论】:

【参考方案1】:

您可以通过使用 IN 运算符创建子查询来避免该问题: http://docs.djangoproject.com/en/dev/ref/models/querysets/#in

【讨论】:

【参考方案2】:
    按同一组键对查询集进行排序 在两个查询集上调用 iterator() 从这个答案中将迭代器提供给 intersect 函数: Joining a set of ordered-integer yielding Python iterators

【讨论】:

【参考方案3】:

将您的查询集合并到一个列表中,然后创建一个集合,您将转换回一个列表:

from itertools import chain
merged_qs = chain(queryset1, queryset2) 
intersection_list = list(set(list( merged_qs )))

【讨论】:

以上是关于Django 查询问题的主要内容,如果未能解决你的问题,请参考以下文章

如何找到触发查询的位置 [Django]

Django 慢查询:将 django 过滤语句连接到数据库日志中的慢查询

Django 查询性能

Django 视图中的大量查询

Django - 查询集和一般 SQL 问题

查询后可以过滤查询集吗? django