Django - admin list_filter 自定义过滤器

 

# admin.py

复制代码
from django.contrib import admin
from django.contrib.admin import SimpleListFilter


class MyStatusFilter(SimpleListFilter):

    # 设置过滤标题
    title = "订单状态"
    # 设置自定义过滤字段
    parameter_name = 'status2'

    # 显示筛选条件
    def lookups(self, request, model_admin):
        return [
            (-1, '已取消'),
            (1, '待付款'),
            (2, '待收货'),
            (3, '已完成'),
            (10, '已退款'),
        ]

    def queryset(self, request, queryset):
        status2 = request.GET.get("status2")

        # 根据选择条件,自定义最终返回的过滤数据,或使用 Order.objects.filter 进行返回
        return queryset.filter(status=status2, is_delete=True)


@admin.register(Order)
class OrderAdmin(admin.ModelAdmin):
    list_display = ["id", "user", "status"]
    list_filter = [MyStatusFilter, ]
复制代码

 

最终效果:

 

posted @   _Q  阅读(101)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
历史上的今天:
2022-06-30 Django - admin filter_horizontal 将多对多字段左右编辑
2022-06-30 Python - 金额保留两位小数
点击右上角即可分享
微信分享提示