【问题标题】:How do I add context/an additional dictionary to Django DayArchiveView如何向 Django DayArchiveView 添加上下文/附加字典
【发布时间】:2021-05-01 19:01:54
【问题描述】:

我有一个 DayArchiveView,我在其中传递了预订时段的查询集。我也希望能够在某些情况下传递,比如更多数据。具体来说,我想通过最早时间,最晚时间和其他一些小计算。

我目前的看法是这样的。

class BookingArchiveView(DayArchiveView):
     queryset = BookingSlot.objects.filter(location__club__id=1)
     date_field = "start_time"
     ordering = ['location']
     #I would like to pass in another object like so
     context["earliest_time"]=BookingSlot.objects.filter(location__club__id=1).annotate(Min('start_time'))

所以我希望能够传入一些可以在 html 中呈现的聚合函数和计算。现在,HTML 只能访问我的查询集。

【问题讨论】:

    标签: django django-views django-generic-views


    【解决方案1】:

    您是否尝试过覆盖get_context_data() 方法?在此方法中,您应该添加要传递给 html 模板的任何额外数据。 另一种方法是在get() 方法中更新您的上下文,但在这种情况下,第一个解决方案会更好。

    您可以在这里找到更多详细信息When to use get, get_queryset, get_context_data in Django?

    【讨论】:

      【解决方案2】:

      get_context_data() 添加到您的 CBV

      以下示例

      def get_context_data(self, *, object_list=None, **kwargs):
          context = super().get_context_data(**kwargs)
          context['calculation'] = some_random_number
          return context
      

      然后你可以访问你在你的get_context_data()中声明的变量在你的html中,比如{{ calculation }}

      【讨论】:

        猜你喜欢
        • 2020-11-26
        • 2014-10-08
        • 1970-01-01
        • 2013-08-26
        • 1970-01-01
        • 2023-03-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多