删除Django admin侧边栏中的“Add”链接

alen0pnh  于 2023-08-08  发布在  Go
关注(0)|答案(1)|浏览(106)

Django管理索引页面在左侧边栏中列出了模型,每个模型都有一个“Add”链接来示例化一个新对象。

的数据
我想删除的'添加'链接,只是一个模型(约会)在侧栏,同时保留在内联视图。

第一次尝试:add_url设置为false。

# admin.py
class AppointmentAdmin(admin.ModelAdmin):
    add_url = False

字符串
这并不奏效。“添加”链接仍然显示。文档说add_url是一个AdminSite方法。我不想在整个网站上应用这个,但值得一试:

第二次尝试

#admin.py
class AppointmentSitewideAdmin(admin.AdminSite):
    add_url = None


没成功Duh,'AppointmentSitewideAdmin'指的是什么。

第三次尝试:覆盖app_list. html模板。这是可行的,但似乎是蛮力的方式。一定有更优雅的东西吧?我已经看过defining-a-custom-app-list-in-django-admin-index-page,更复杂,不直接适用,并使用AdminSite(我假设我需要在这个应用程序的本地工作,即。ModelAdmin)。

{% if app_list %}
  {% for app in app_list %}
    <div class="app-{{ app.app_label }} module{% if app.app_url in request.path|urlencode %} current-app{% endif %}">
      <table>
        <caption>
          <a href="{{ app.app_url }}" class="section" title="{% blocktranslate with name=app.name %}Models in the {{ name }} application{% endblocktranslate %}">{{ app.name }}</a>
        </caption>
        {% for model in app.models %}
            <tr class="model-{{ model.object_name|lower }}{% if model.admin_url in request.path|urlencode %} current-model{% endif %}">
              {% if model.admin_url %}
                <th scope="row"><a href="{{ model.admin_url }}"{% if model.admin_url in request.path|urlencode %} aria-current="page"{% endif %}>{{ model.name }}</a></th>
              {% else %}
                <th scope="row">{{ model.name }}</th>
              {% endif %}

              {# --------------- THE RELEVANT LINE ------------------- #}
              {% if model.add_url and model.name != 'Appointments' %}
                <td><a href="{{ model.add_url }}" class="addlink">{% translate 'Add' %}</a></td>
              {% else %}
                <td></td>
              {% endif %}

              {% if model.admin_url and show_changelinks %}
                {% if model.view_only %}
                  <td><a href="{{ model.admin_url }}" class="viewlink">{% translate 'View' %}</a></td>
                {% else %}
                  <td><a href="{{ model.admin_url }}" class="changelink">{% translate 'Change' %}</a></td>
                {% endif %}
              {% elif show_changelinks %}
                <td></td>
              {% endif %}
            </tr>
        {% endfor %}
      </table>
    </div>
  {% endfor %}
{% else %}
  <p>{% translate 'You don’t have permission to view or edit anything.' %}</p>
{% endif %}

mv1qrgav

mv1qrgav1#

“添加”按钮由添加权限控制。您可以使用以下命令隐藏它:

class AppointmentAdmin(admin.ModelAdmin):
    def has_add_permission(self, request):
        return False

字符串

相关问题