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

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/287920.html

相关文章:

  • 51单片机基础05 定时器
  • GitHub Copilot使用指南:助力开发者加速编程创新
  • 摘要与登记
  • linux逻辑卷练习
  • 【计算机毕设】无查重 基于python豆瓣电影评论舆情数据可视化系统(完整系统源码+数据库+开发笔记+详细部署教程)✅
  • NodeJS 百度智能云文本转语音(实测)
  • hugging face 利用现有模型进行预测
  • C语言 strlen求字符串长度
  • Linux驱动(三):字符设备驱动之杂项
  • Go wv(WebView2) GUI框架介绍和使用
  • 【Python报错已解决】“NameError: name ‘re‘ is not defined”
  • BeanFactory 和 FactoryBean 的区别
  • 用QT写一个加载模板文件,替换关键字为实际值
  • 【前端框架】你知道的前端框架有哪些呢
  • JavaWeb(基于SpringBoot开发)全总结(1)
  • 藏头诗娱乐小程序源码
  • 如何在 Spring Boot 中创建自定义注解简化重复编码
  • 栈和队列
  • 一 lua学习笔记:概述
  • 第L2周:机器学习-线性回归
  • Ubuntu系统本地搭建WordPress网站并一键发布内网站点至公网实战
  • 20-22 - 打造专业的编译环境
  • Language Models are Few-Shot Learners
  • 【计算机网络复习资料】
  • hello树先生——红黑树
  • go中的并发处理