zoukankan      html  css  js  c++  java
  • Django Admin Cookbook-10如何启用对计算字段的过滤

    10.如何启用对计算字段的过滤?

    假设你admin.py中的Hero管理模型如下:

    @admin.register(Hero)
    class HeroAdmin(admin.ModelAdmin):
        list_display = ("name", "is_immortal", "category", "origin", "is_very_benevolent")
        list_filter = ("is_immortal", "category", "origin",)
        def is_very_benevolent(self, obj):
            return obj.benevolence_factor > 75
    

    它具有一个计算字段is_very_benevolent,Admin后台显示如下:

    我们已经在来自模型属性字段上添加了过滤,但是还想在计算出的字段上添加过滤。为此,我们可以通过继承SimpleListFilter类实现:

    class IsVeryBenevolentFilter(admin.SimpleListFilter):
        title = 'is_very_benevolent'
        parameter_name = 'is_very_benevolent'
        def lookups(self, request, model_admin):
            return (
                ('Yes', 'Yes'),
                ('No', 'No'),
            )
        def queryset(self, request, queryset):
            value = self.value()
            if value == 'Yes':
                return queryset.filter(benevolence_factor__gt=75)
            elif value == 'No':
                return queryset.exclude(benevolence_factor__gt=75)
            return queryset
    

    然后将更改list_filter为list_filter = ("is_immortal", "category", "origin", IsVeryBenevolentFilter)

    这样,便可以对计算出的字段进行过滤。修改后管理后台显示如下:

    返回目录

  • 相关阅读:
    Docker基础 ubuntu安装docker
    layui.laytpl 模板引擎用法
    golang 中 strings 包的 Replace 用法介绍笔记
    golang之结构体
    Mysql复习秘籍
    NFS 共享存储
    Rsyncd 同步服务
    企业服务器架构
    基础面试题二
    基础面试题一
  • 原文地址:https://www.cnblogs.com/superhin/p/12171512.html
Copyright © 2011-2022 走看看