Как переопределить `base.html` Django admin только для одной формы администратора? - PullRequest
0 голосов
/ 22 января 2020

У меня есть модель, которая будет использоваться для получения данных от пользователя. Будет только одно поле ввода и одна кнопка для отправки. Для этого я хочу удалить другие кнопки.

1 Ответ

0 голосов
/ 22 января 2020

Допустим, у вас есть модель как class Post(models.Model):

В вашем файле admin.py создайте что-то вроде этого:

class Post(models.Model):
    title = ...


    def change_view(self, request, object_id, form_url='', extra_context=None):
        extra_context = extra_context or {}
        if object_id:
            extra_context.update(
                instance=Posts.objects.get(pk=object_id)
            )
        return super().change_view(
            request, object_id, form_url=form_url, extra_context=extra_context
        )

, чтобы каждый раз, когда вы go переходили на свою страницу сообщений в админке вы получите переменную {{instance}}

. Затем вы должны создать новую папку внутри вашей папки templates и назвать ее admin, затем внутри папки admin создать новый файл с именем change_form.html (имена важны) документы внутри этого файла:

{% extends "admin/change_form.html" %}
{% block after_field_sets %}
{% if instance %}
   PUT YOUR CHANGES IN HERE
{% endif %}
{% endblock %}

Это заменит только страницу поста в админке. Другие страницы останутся прежними. Чтобы точно решить, куда поместить ваши изменения, вы можете проверить значение по умолчанию change_form.html из django.

...