当前位置: 首页 > article >正文

4、Django Admin对自定义的计算字段进行排序

通常,Django会为模型属性字段,自动添加排序功能。当你添加计算字段时,Django不知道如何执行order_by,因此它不会在该字段上添加排序功能。

如果要在计算字段上添加排序,则必须告诉Django需要排序的内容。你可以通过在在计算字段方法中设置admin_order_field属性来执行此操作 。

以OriginAdmin为例,添加以下代码

hero_count.admin_order_field = '_hero_count'
villain_count.admin_order_field = '_villain_count'

完整代码如下:

@admin.register(Origin)
class OriginAdmin(admin.ModelAdmin):
    list_display = ("name", "hero_count", "villain_count")

    def get_queryset(self, request):
        queryset = super().get_queryset(request)
        queryset = queryset.annotate(
            _hero_count=Count("hero", distinct=True),
            _villain_count=Count("villain", distinct=True),
        )
        return queryset
    def hero_count(self, obj):
        return obj._hero_count
    def villain_count(self, obj):
        return obj._villain_count
    hero_count.admin_order_field = '_hero_count'
    villain_count.admin_order_field = '_villain_count'

显示效果:

后,点击抬头标签,显示字段排序


http://www.kler.cn/a/292894.html

相关文章:

  • NVIDIA Isaac Sim 仿真平台体验测评
  • Web大学生网页作业成品——婚礼婚纱网页设计与实现(HTML+CSS)(6个页面)
  • ODOO学习笔记(8):模块化架构的优势
  • 【juc】AbstractQueuedSynchronized为什么采用双向链表
  • HTML之列表
  • [SWPUCTF 2022 新生赛]Power! 反序列化详细题解
  • Verilog和Matlab实现RGB888互转YUV444
  • go--闭包
  • 阿里“整改摘帽”,马云的“百年企业”愿景再出发
  • 什么是URL Slug及其如何影响SEO?
  • 中国科学院近代物理研究所博士招生目录
  • python进阶篇-day07-进程与线程
  • [米联客-XILINX-H3_CZ08_7100] FPGA程序设计基础实验连载-24 TPG图像测试数据发生器设计
  • SD-WAN,是干嘛的?
  • PS插件DR5至臻高级版下载安装教程Photoshop美颜美白牙齿磨皮使用插件百度网盘分享
  • 【 OpenHarmony 4.1 Launcher 源码解析 】-- 初体验
  • 推荐字体网站
  • Openwrt 安装 AX210 无线网卡
  • 22. c语言怎么打印2进制、8进制、10进制、16进制数?
  • 【SQL】Delete使用
  • ConfigBus
  • 基于Python的电商导购APP设计与实现
  • Opencv中的直方图(1)计算反向投影直方图函数calcBackProject()的使用
  • 【openwrt-21.02】T750 openwrt MT7916 使用Intel AX200的网卡WPS PBC连接失败问题分析及解决方案
  • C++学习笔记——day 1
  • 后缀表达式转中缀表达式