Ответ 1
ChangeList как класс действительно классный и функциональный. Однако трудно использовать вне контекста монолита AdminSite.
Класс ChangeList принимает 12 требуемых параметров __init__()
. Только это число должно оттолкнуть вас и вдвойне, когда вы поймете, что все они получены из Admin 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
UPDATE: В Django 1.4 оба ChangeList
и changelist_view()
изменены путем добавления одного и двух новых параметров соответственно.