2010-02-23 4 views
12

список изменений таблицы Джанго действительно круто - поиск, фильтрованию, множественным выбором действий и т.д.Многократное Джанго Список изменений Вне Администратор сайта

Я строю пользовательские бэкенд для приложения, и я продолжаю понимая: это точно что мне нужно, я должен использовать его повторно.

У кого-нибудь есть опыт использования списка изменений за пределами приложения администратора Django?

То, что я прибыл в настоящее время что-то вроде этого:

from profile.admin import ProfileAdmin 
from django.contrib.admin.sites import AdminSite 
from profile.models import Profile 
profile_admin = ProfileAdmin(Profile, AdminSite()) 
return profile_admin.changelist_view(request) 

Я хотел бы знать, если кто имеет опыт работы с этим или может предложить альтернативу.

+0

Удалось ли вам снова использовать Changelist или адаптировать его? – guival

+0

Пытаясь сделать то же самое, хотелось бы услышать конечный подход – dave4jr

ответ

9

ChangeList как класс действительно классный и функциональный. Однако, сложно использовать вне контекста монолита AdminSite.

Класс ChangeList требует 12 необходимых параметров __init__(). Только этот номер должен оттолкнуть вас и вдвойне, когда вы поймете, что все они получены от администратора changelist_view(). Хотя эти параметры остались неизменными с Django 1.1, они изменились с 1.0, и это так много внутреннего объекта Django, я бы не стал полагаться на стабильный интерфейс.

Лучший способ использовать список изменений - или специально, чтобы получить выгоды список изменений (что вы после) - это использовать метод changelist_view(). Использование этого, конечно, требует использования/подкласса AdminSite. Это стоит делать, или, по крайней мере, попробовать. Похоже, вы уже есть.

Этот метод принимает параметр request и любит /(?P<app_label>%s)/(?P<model_name>%s)/ в маршруте URL, который указывает на него.

Digging в код:

  • ChangeList жизни в django.contrib.admin.views.main
  • changelist_view() представляет собой метод на django.contrib.admin.options.ModelAdmin

UPDATE: В Django 1.4, как ChangeList и changelist_view() изменены путем добавления одного и два новых параметра соответственно.