gpt4 book ai didi

Django 管理页面 : Can queryset extra fields be used for sorting specific columns

转载 作者:行者123 更新时间:2023-12-05 00:39:00 24 4
gpt4 key购买 nike

因此,查询集中的额外字段可用于向您的选择查询添加其他列,而这些列又可以设置为默认排序。到目前为止,我已经能够做到这一点:创建了一个额外的字段,然后将其设置为默认排序。

qs = qs.extra(select={'natname':"concat('0', nat, name)"}, order_by=['natname'])

现在,在我的管理界面中,我有我的其他字段 {name, nat, location, space, ....}表中的结果按 natname 排序当页面加载时......完美。

但现在我希望在 name 上启用订购功能。字段,而不是按 name 排序, 我希望它通过 natname 订购.这可能吗?

所以即使 natname是一个额外的字段,我想以某种方式绑定(bind)列 namenatname订购时。

现在,如果我这样做 qs.query.__str__() ,我得到 order by natname 的 sql 查询.当我点击列 name , 按更改排序 name ,但仅针对这种特殊情况,我希望它通过 natname 订购.这可能吗?

我查看了 Django 如何在 <django-installation-path>/contrib/admin 下为这些自动管理页面生成标题和 View 。但它只引用 list_display ModelAdmin 中定义的集合对于这个模型。如果我在那里进行任何更改,显示的列会在管理 View 中更改。

听起来可能有点困惑。如果您需要特定的详细信息,请随时询问。

谢谢。

最佳答案

是的!这是可能的(至少在 Django 1.2.3 中):

在您的 admin.ModelAdmin 子类中:

from django.contrib import admin

from .models import ClassA

class ModelAdminA(admin.ModelAdmin):
list_display = ('natname',)

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

def queryset(self, request):
qs = super(ModelAdminA, self).queryset(request)
qs = qs.extra(select={ 'natname': "concat('0', nat, name)" })
return qs

admin.site.register(ClassA, ModelAdminA)

关于Django 管理页面 : Can queryset extra fields be used for sorting specific columns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4890844/

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