我如何在django admin中的所有视图中拥有app_list

问题描述 投票:1回答:2

我正在覆盖该站点的django管理员。在defult索引页面中,它们具有app_list变量,其中包含所有应用程序以及它们的模型。

但是其他app_list的视图不可用,但我想在所有视图中都可用,以便可以在边栏上单击以使其可用]

在此文件中

https://github.com/django/django/blob/master/django/contrib/admin/sites.py#L382

他们有这样的代码

app_list = list(six.itervalues(app_dict))

但是我如何在change_list页面中使之可用

python django
2个回答
0
投票

覆盖app_index.html

{% extends "admin/index.html" %}
{% load i18n %}
{% load url from future %}

{% if not is_popup %}
{% block breadcrumbs %}
<div class="breadcrumbs">
<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
&rsaquo;
{% for app in app_list %}
{% blocktrans with app.name as name %}{{ name }}{% endblocktrans %}
{% endfor %}
</div>
{% endblock %}
{% endif %}

{% block sidebar %}{% endblock %}

0
投票

我知道已经晚了7年,但我想指出一下,因为我遇到过您的情况。如果您的目的是获取所有应用程序(应用程序列表)及其各自的型号,则可以使用available_apps而不是app_list,因为可以在所有管理页面中访问available_apps(请参见下面的site.py代码) )

def each_context(self, request):
    """
    Return a dictionary of variables to put in the template context for
    *every* page in the admin site.
    For sites running on a subpath, use the SCRIPT_NAME value if site_url
    hasn't been customized.
    """
    script_name = request.META['SCRIPT_NAME']
    site_url = script_name if self.site_url == '/' and script_name else self.site_url
    return {
        'site_title': self.site_title,
        'site_header': self.site_header,
        'site_url': site_url,
        'has_permission': self.has_permission(request),
        'available_apps': self.get_app_list(request), #this one
        'is_popup': False,
    }
© www.soinside.com 2019 - 2024. All rights reserved.