【问题标题】:Is Concatenating Django QuerySets In A Loop The Right Thing To Do?在循环中连接 Django 查询集是正确的吗?
【发布时间】:2010-11-17 10:24:39
【问题描述】:

我有一个名为 Collection 的 Django 模型,它表示项目的集合 (CollectionItem)。每个集合仅包含特定类型的项目。 (CollectionItem 有一个 Collection 的外键)。

我想获取特定类型的公共标记列表中的所有 CollectionItem,并返回按特定字段排序的它们。这是我使用的查询代码:

lists = Collection.objects.filter(is_public=True, type=7)
items = CollectionItem.objects.none()
for list in lists:
    items |= CollectionItem.objects.filter(collection=list)
items = items.order_by('name')

我不得不想象当我有一个包含大量列表和项目的大型数据库时,这根本不会很好地扩展。在 Django 中有没有更好的方法来做到这一点?或者与我不应该太担心的其他选项相比,查询循环中涉及的低效率是否可以忽略不计?

【问题讨论】:

    标签: django django-queryset


    【解决方案1】:

    听起来你只需要:

    items = CollectionItem.objects.filter(
                        collection__is_public=True, collection__type=7
                   ).order_by('name')
    

    【讨论】:

      猜你喜欢
      • 2014-02-14
      • 2021-10-02
      • 2021-05-15
      • 2013-06-26
      • 2020-07-17
      • 1970-01-01
      • 1970-01-01
      • 2018-10-05
      • 2022-11-01
      相关资源
      最近更新 更多