在Django Admin中,可以通过自定义筛选器来实现筛选出或不包括模型管理多选小部件中的某些记录。
首先,需要创建一个自定义筛选器类,继承自admin.SimpleListFilter
。在该类中,需要实现title
、parameter_name
和lookups
方法。
title
方法用于设置筛选器的显示名称。parameter_name
方法用于设置筛选器的URL参数名称。lookups
方法用于定义筛选器的选项,返回一个元组列表,每个元组包含两个值,分别是选项的显示名称和对应的查询条件。以下是一个示例代码:
from django.contrib import admin
class CustomFilter(admin.SimpleListFilter):
title = 'Custom Filter'
parameter_name = 'custom_filter'
def lookups(self, request, model_admin):
return (
('option1', 'Option 1'),
('option2', 'Option 2'),
)
def queryset(self, request, queryset):
if self.value() == 'option1':
return queryset.filter(field__contains='option1')
if self.value() == 'option2':
return queryset.filter(field__contains='option2')
接下来,在模型管理类中使用该自定义筛选器。例如,假设有一个名为MyModel
的模型,可以按如下方式定义模型管理类:
from django.contrib import admin
from .models import MyModel
@admin.register(MyModel)
class MyModelAdmin(admin.ModelAdmin):
list_filter = (CustomFilter,)
这样,在Django Admin中就会显示一个名为"Custom Filter"的筛选器,用户可以选择"Option 1"或"Option 2"来筛选出或不包括相应的记录。
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云