ChangeList как класс действительно классный и многофункциональный. Однако трудно использовать вне контекста монолита AdminSite.
Класс ChangeList принимает 12 обязательных __init__()
параметров. Одно это число должно вас отвлечь и вдвойне, когда вы поймете, что все они получены от администратора changelist_view()
. Несмотря на то, что эти параметры остались прежними со времени Django 1.1, они изменились с 1.0, и это настолько большой внутренний объект Django, что я не буду полагаться на стабильность его интерфейса.
Лучший способ использовать ChangeList - или, в частности, чтобы получить преимущества списка изменений (то, что вам нужно) - это использовать changelist_view()
метод. Использование этого, конечно, требует использования / создания подкласса AdminSite. Это стоит сделать или, по крайней мере, попробовать. Похоже, вы уже.
Этот метод принимает параметр request
и любит /(?P<app_label>%s)/(?P<model_name>%s)/
в маршруте URL, который указывает на него.
Копаем в коде:
ChangeList
живет в django.contrib.admin.views.main
changelist_view()
- это метод django.contrib.admin.options.ModelAdmin
ОБНОВЛЕНИЕ: В Django 1.4 значения ChangeList
и changelist_view()
изменились путем добавления одного и двух новых параметров соответственно.