首页 > 解决方案 > Django - 在视图中返回多个查询集

问题描述

姜戈 1.10

在我看来,我有一个函数get_queryset(),目前返回一个查询集。这个函数是从另一个函数调用的,该函数get_context()接受该数据,使用它来获取一些值,并将所有内容返回到前端。

但是,我现在想从 中返回 2 个查询集get_queryset(),一个是完整的查询集,另一个是应用了过滤器的查询集。

我以为我可以简单地做类似的事情:

full_results = query.all()
# do some filtering
filter_results = full_results.someFilter()

return full_results, filter_results

但是,我还有另一个功能,这些结果在发送到前端之前先发送到 FIRST。我想我可以使用括号符号轻松访问这些查询集,就像这样 -

faceted = self.get_queryset()[0].facet('thing')

然而!事实证明我无法这样做。我正在尝试在第二个 django 函数中访问查询集中每个项目的属性,但出现错误 -

AttributeError: 'SearchQuerySet' object has no attribute 'feature'

很明显我做错了什么。有可能做我想做的事吗?还是只创建另一个函数来返回这些数据会更好?

标签: pythondjangodjango-queryset

解决方案


您只能从get_queryset. 但get_context_data它本身可以扩展以添加任何你喜欢的东西。

def get_context_data(self, *args, **kwargs):
    context = super().get_context_data(*args, **kwargs)
    context['filter_results'] = context['full_results'].someFilter()
    return context

推荐阅读