Django-在视图中返回多个查询集

时间:2018-07-09 15:50:26

标签: python django django-queryset

Django 1.10

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

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

我以为我可以做类似的事情:

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函数中访问queryset中每个项目的属性,但出现错误-

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

很明显,我在做错事。可以做我想做的事吗?还是仅使另一个函数返回此数据会更好?

1 个答案:

答案 0 :(得分:2)

您只能从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