代码之家  ›  专栏  ›  技术社区  ›  demluckycharms

django-返回视图中的多个查询集

  •  0
  • demluckycharms  · 技术社区  · 6 年前

    姜戈1.10

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

    但是,现在我想从返回2个查询集 获取查询集() ,一个是完整的查询集,另一个应用了筛选器。

    我想我可以做一些简单的事情,比如:

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

    但是,我还有另一个函数,这些结果在发送到前端之前先发送到第一个函数。我想我可以很容易地用括号来访问这些查询集,就像这样-

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

    然而!结果我做不到。我试图在第二个django函数中访问queryset中每个项的属性,但得到了一个错误-

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

    很明显我做错了什么。有没有可能做我想做的?还是让另一个函数返回这些数据更好?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Daniel Roseman    6 年前

    只能从返回单个查询集 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