Django:可以覆盖管理员排序操作吗?

Django : possible to override Admin sort action?

我觉得这应该是可能的,但我不知道怎么做。

我有一个模型:

class ModelClass (models.Model):
    name = models.CharField(max_length=100)
    email = models.EmailField()
    nickname = models.CharField(max_length=32)

在 Django 管理列表屏幕中,当用户单击 'name' 列的顶部以对 'nickname' 值进行排序时,有什么办法吗?

我觉得应该有一种方法来拦截处理,否则会导致结果集响应列顶部的单击而重新排序,然后按照我之前想做的方式进行排序允许重新绘制列表屏幕。

有什么想法吗?

您可以使用 ModelAdmin 的方法和定义的 admin_order_field 属性:

输出列表中的 name
class ModelClassAdmin(admin.ModelAdmin):

    list_display = ('get_name', 'email')

    def get_name(self, obj):
        return obj.name
    get_name.short_description = 'name'
    get_name.admin_order_field = 'nickname'