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

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

【问题讨论】:

    标签: django many-to-many intersection django-queryset


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:
      1. 按同一组键对查询集进行排序
      2. 在两个查询集上调用 iterator()
      3. 从这个答案中将迭代器提供给 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 )))
        

        【讨论】:

          猜你喜欢
          • 2010-12-31
          • 2017-08-09
          • 1970-01-01
          • 1970-01-01
          • 2017-09-18
          • 1970-01-01
          • 2011-06-03
          • 2021-09-13
          相关资源
          最近更新 更多