gpt4 book ai didi

django - 在 django 管理索引页面中定义自定义 app_list

转载 作者:行者123 更新时间:2023-12-03 20:50:41 24 4
gpt4 key购买 nike

我想定义一个自定义应用程序列表以在 django 的管理索引页面中使用,因为我希望应用程序按特定顺序显示,而不是默认的字母顺序。浏览各种 SO 帖子,似乎还不可能在任何明显的地方(例如 admin.py、models.py)声明所需的应用程序顺序。

现在,我可以看到 django 管理员的 index.html 文件包含以下语句:

{% for app in app_list %}
# do stuff with the app object

因此,我想将其更改为使用名为 my_app_list 的自定义列表对象。在 python 中,我会按照以下方式执行此操作:
from django.db.models import get_app
my_app_list = [get_app('myapp1'), get_app('myapp2'), ..., get_app('django.contrib.auth')]
for app in my_app_list
...

我的问题是,如何将上面前 2 行的等价代码编码到 index.html 文件的本地副本中?

或者,我应该将这些行插入到哪个 python 源文件中,以便变量 my_app_list 在 index.html 中可用。

提前致谢。

菲尔

最佳答案

子类 django.contrib.admin.site.AdminSite() .覆盖 .index()方法,并做这样的事情:

class MyAdminSite(django.contrib.admin.site.AdminSite):
def index(self, request, extra_context=None):
if extra_context is None:
extra_context = {}
extra_context["app_list"] = get_app_list_in_custom_order()
return super(MyAdminSite, self).index(request, extra_context)

使用 my_admin_site = MyAdminSite() 实例化此子类的实例,将您的模型附加到它(使用通常的 my_admin_site.register() ),并将其附加到 URLconf;应该这样做。

(我还没有尝试过,这是基于我对 AdminSite 源代码的阅读。)

关于django - 在 django 管理索引页面中定义自定义 app_list,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8893755/

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