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'
很明显,我在做错事。可以做我想做的事吗?还是仅使另一个函数返回此数据会更好?
答案 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