【问题标题】:Django sum of objects filtered by date view按日期视图过滤的 Django 对象总和
【发布时间】:2021-02-04 10:34:33
【问题描述】:

我想通过使用通用日期视图获取我获得的项目总和。

示例views.py

class OrderDayArchiveView(LoginRequiredMixin, generic.dates.DayArchiveView):
    queryset = Order.objects.all()
    date_field = 'date_ordered'
    template_name = 'ordersys/manager/archive_page.html'

示例模板:

{% for order in object_list %}
    <li class="bg-light">
        {{ order.id }}: {{order.print_ordered_items_products_amounts}} (${{order.create_cost}}) 
    </li>
{% endfor %}

urls.py 中的示例路径:

path('<int:year>/<int:month>/<int:day>/', views.OrderDayArchiveView.as_view(month_format='%m'), name="archive_day"),

我想获取发送到模板的所有“order.create_cost”的总和,是否可以在此视图中获取过滤的查询集?如果没有,我如何在模板中求和。

【问题讨论】:

    标签: python django date view


    【解决方案1】:

    您可以简单地覆盖 get_context_data 并在那里添加您的聚合:

    from django.db.models import Sum
    
    class OrderDayArchiveView(LoginRequiredMixin, generic.dates.DayArchiveView):
        queryset = Order.objects.all()
        date_field = 'date_ordered'
        template_name = 'ordersys/manager/archive_page.html'
        
        def get_context_data(self, *, object_list=None, **kwargs):
            context = super().get_context_data(object_list=object_list, **kwargs)
            queryset = context['object_list']
            sum_create_cost = queryset.aggregate(Sum('create_cost'))['create_cost__sum']
            context['sum_create_cost'] = sum_create_cost
            return context
    

    【讨论】:

      猜你喜欢
      • 2014-09-04
      • 2021-11-26
      • 1970-01-01
      • 2019-03-01
      • 2021-04-02
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多