gpt4 book ai didi

django - 如何允许通过自定义 list_display 字段在 Django admin 中进行排序,该字段没有 DB 字段也没有可注释

转载 作者:行者123 更新时间:2023-12-04 19:22:12 27 4
gpt4 key购买 nike

我有一个自定义 list_display 字段,它负责我的一个管理页面中的一列整数。

我需要让工作人员根据它进行排序。

如果整数表示某个 DB 字段的计数/平均值/等,则有一个解决方案可以解决这个问题,这对我来说并非如此。

[该案例的解决方案在这里:Django admin: how to sort by one of the custom list_display fields that has no database field
]

任何想法如何在不实际为值创建和维护数据库字段的情况下实现这种排序?

最佳答案

排序是在数据库引擎中完成的(在 order by 子句中),所以我认为除非你在模型中具体化一个字段,否则你将无法实现你想要的。计算状态此时不可排序(至少在管理界面中不可排序,如果您使用自己的界面,则可以使用 extra )。

如果问题出在过滤上,您可以编写自定义 FilterSpec (似乎没有在任何地方记录,但 SO 有一个 good example )。

但是对于在管理员中进行排序,恐怕您唯一的选择是物化字段。

编辑:

嗯...

你可以尝试一些东西。 It is possible (尽管我认为它没有正式记录在任何地方)更改 ModelAdmin 使用的查询集。如果您的计算字段足够简单,可以嵌入查询本身,您可以执行以下操作:

class BlahAdmin(admin.ModelAdmin):
... Whatever definitions ...

def queryset(self, request):
return Blah.objects.extra(select={'computed': "count(field_x)"})

这可能会奏效。虽然它未经测试。

关于django - 如何允许通过自定义 list_display 字段在 Django admin 中进行排序,该字段没有 DB 字段也没有可注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2647632/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com