Django 管理员更改列表视图标题

Django admin changelist view title

如何传递过滤器值来更改列表视图标题?我有报告的管理页面,我想在标题中存储日期,所以它看起来像这样:"Reports summary for day 24-01-2021" 我想获取日期来自列表过滤器 reports__report_date

class AdminReportsProxy(admin.ModelAdmin):
    """Admin model, that creats site of reports summary"""

    model = ReportsProxy
    actions = None
    search_fields = [
        "first_name",
        "last_name",
    ]
    list_display = [
        "get_salesman",
        "get_number_of_meetings_today",
        "get_number_of_meetings_tomorrow",
        "get_number_of_sales",
        "get_number_of_recommandations",
        "get_net_sales",
        "get_report_date",
        "edit_report",
    ]
    list_filter = [
        ("reports__report_date", DateRangeFilter),
        NetSalesOrder,
    ]

    def changelist_view(self, request, extra_context=None):
        extra_context = {'title': f'Reports summary for day:{}'}
        return super(AdminReportsProxy, self).changelist_view(request, extra_context=extra_context)

在覆盖函数 changelist_view 中,只需访问 DateRangeFilter 小部件传递的查询参数,它们应该如下所示

your_filtered_field__gte -> 起始日期

your_filtered_field__lte -> 到目前为止

喜欢以下内容:

    def changelist_view(self, request, extra_context=None):
        date_from = request.GET.get("reports__report_date__gte", None)
        date_to = request.GET.get("reports__report_date__lte", None)
        if date_from and date_to:
            # If these two values are available, you can replace the title of the page.
            extra_context = {
                "title": f"Report Summary between {date_from} - {date_to}"
            }
        return super().changelist_view(request, extra_context)