【问题标题】:How can I include multiple querysets in a django view?如何在 django 视图中包含多个查询集?
【发布时间】:2016-10-05 21:19:02
【问题描述】:

是否可以在视图函数中定义多个查询集?

【问题讨论】:

  • 是的。只需将它们添加到上下文中。您使用的是哪种类型的视图。基于类还是基于函数?
  • @SardorbekImomaliev 我正在使用基于类的视图。
  • @TomHiggins 你的问题解决了吗?
  • @SardorbekImomaliev 我有!感谢您的所有帮助。

标签: django django-queryset


【解决方案1】:

这里是例子

class MyMultiQuerysetView(TemplateView):
    def get_context_data(self, **kwargs):
        context_data = super().get_context_data(**kwargs)
        context_data['queryset1'] = MyModel1.objects.all()
        context_data['queryset2'] = MyModel2.objects.all()
        return context_data

现在queryset1queryset1 可以在您的模板中使用。

【讨论】:

    【解决方案2】:

    对于基于类的视图

    class MyView(ListView):
        context_object_name = "data"
        template_name = "myapp/template.html"
    
        def get_queryset(self):
            myset = {
                "first": Model1.objects.all(),
                "second": Model2.objects.all(),
                .
                .
                .
            }
            return myset
    

    在 HTML 中你可以这样称呼它们:

    {% for a in data.first %}
    {% for a in data.second %}
    

    对于基于函数的视图

    def MyView(request):
        myset = {
            "first": Model1.objects.all(),
            "second": Model2.objects.all(),
            .
            .
            .
        }
        return render(request, "myapp/template.html", myset)
    

    在 HTML 中:

    {% for a in first %}
    {% for a in second %}
    

    【讨论】:

      猜你喜欢
      • 2023-03-12
      • 2014-04-04
      • 1970-01-01
      • 2018-08-13
      • 2017-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-20
      相关资源
      最近更新 更多