Добавить свои переменные в шаблоны админки. Изменить поведение view в админке django
14 ноября 2016 г. 12:40
Ниже я написал два примера, как можно изменить стандартное поведение представления в админке Django или как добавить свои данные в представление:
# admin.py
@admin.register(Order)
class OrderAdmin(admin.ModelAdmin):
list_display = ('project', 'amount')
list_filter = ('is_inner', )
# 1-ый пример - ставим по умолчанию сортировку объекта по полю "is_inner__exact" в модели Order
def changelist_view(self, request, extra_context=None):
key = 'is_inner__exact'
if key not in request.GET:
q = request.GET.copy()
q[key] = '0'
request.GET = q
request.META['QUERY_STRING'] = request.GET.urlencode()
return super(OrderAdmin, self).changelist_view(request, extra_context=extra_context)
# 2-ой пример - обрабатываем данные объекта, которого редактируем в админке
def change_view(self, request, object_id, form_url='', extra_context=None):
if object_id:
extra_context = extra_context or {}
obj = self.model.objects.get(id=int(object_id))
extra_context.update({'warning_messages': some_method(obj)})
return super(OrderAdmin, self).change_view(request, object_id, form_url, extra_context)
Шаблон для 2-ого примера: orders/templates/orders/order/change_form.html
{% extends "admin/change_form.html" %} {% block object-tools %} {% if object_id %} {% if warning_messages %} <div class="message_container"> <h2>Сообщения</h2> {% for message in warning_messages %} <p>{{ message.full }}</p> {% endfor %} </div> {% endif %} {% endif %} {{ block.super }} {% endblock %}
Похожие статьи:
Представляю вашему вниманию книгу, написанную моим близким другом Максимом Макуриным: Секреты эффективного управления ассортиментом.
Книга предназначается для широкого круга читателей и, по мнению автора, будет полезна специалистам отдела закупок и логистики, категорийным и финансовым менеджерам, менеджерам по продажам, аналитикам, руководителям и директорам, в компетенции которых принятие решений по управлению ассортиментом.
Комментарии: 0