python - 如何在 Django Admin 中动态覆盖 list_filter 字段?
问题描述
我有几个领域list_filter
。我必须创建一个model.SimpleListFilter
为list_filter
.
我不能为每个 list_filter 创建单独的类。
最好的解决方案是:
class MyModelAdmin(MyCustomFilter):
list_filter = ('client_name', 'case_received_date')`
为每个字段调用lookups
andqueryset
方法。MyCustomFilter
list_filter
# admin.py
class MyModelAdmin(admin.ModelAdmin):
list_display = ('client_name','client_application_number')
list_filter = ('client_name', 'case_received_date', MyCustomFilter)
class MyCustomFilter(admin.SimpleListFilter):
def lookups(self, request, model_admin):
pass
def queryset(self, request, queryset):
# Apply the filter selected, if any
pass
解决方案
您可以使用函数来生成无限数量的匿名类。这是您的代码的更新:
class MyCustomFilter(admin.SimpleListFilter):
def lookups(self, request, model_admin):
pass
def queryset(self, request, queryset):
# Apply the filter selected, if any
pass
def my_custom_filter_maker(field):
class MyAnonymousCls(MyCustomFilter):
title = field
parameter_name = field
return MyAnonymousCls
class MyModelAdmin(admin.ModelAdmin):
list_display = ('client_name','client_application_number')
list_filter = ('client_name', 'case_received_date',
my_custom_filter_maker('field_name'), my_custom_filter_maker('another_field'))
推荐阅读
- flutter - 当您启动从 Internet 下载的已完成项目时,正在运行 Gradle 任务“assembleDebug”
- sql-server - 如何更改 SQL Server 中的 Windows 用户名?
- node.js - 使用 socket.io 处理多个选项卡或刷新
- java - 在Java中比较2张带有透明区域的图像
- javascript - 使用 api 检查 aws s3 存储桶可用性(运行状况)
- http - 如何在 ESP32 中读取分块的 http 响应
- sql - 编写一个 SQL 查询,按渠道产生月收入和上个月的收入
- reactjs - 可以在 2 个不同的 React 组件中创建和使用具有 2 个实例的 ReactContext 吗?
- ios - 如何为我的 Cloud Functions 服务器创建“挑战”
- c++ - 在调用堆栈中没有我的代码的情况下在 Qt5WebEngineCore.dll 上崩溃