2013-02-11 22 views
11

Szukam sposobów dodawania niestandardowych działań do strony zmiany administracyjnej Django. Jestem nie szukając działań, które można dodać do rozwijanego pola w przeglądzie.Dodaj niestandardowe działanie administratora Django

Jeden model w mojej aplikacji Django zawiera informacje o dokumentach, a te są automatycznie kompilowane do plików PDF w interfejsie użytkownika. Chciałbym dać administratorowi możliwość szybkiego renderowania pliku PDF bezpośrednio ze strony zmiany, aby móc szybko sprawdzić wyniki.

Już grałem z nadpisaniem change_form.html/submit_line.html i nie ma problemu z dodaniem przycisku. Zastanawiam się jednak, jak rozszerzyć moduł administratora w taki sposób, aby zawierał on moją niestandardową akcję.

Odpowiedz

4

Ponieważ niestandardowe widoki admina są w zasadzie zwykłymi widokami, nie ma wielu specjalności. Kilka rzeczy, które należy wziąć pod uwagę dla czystszego integracji:

  • Dodaj wzoru url przez get_urls() z AdminSite.
  • Podaj argument current_app dla RequestContext lub Context podczas renderowania szablonu, który podklasy szablonów administracyjnych.

EDIT:

Znalazłem przykład tutaj: http://shrenikp.webs.com/apps/blog/show/5211522-add-custom-view-method-for-django-admin-model-

uwaga, że ​​przykład nie wykorzystują current_app argumentu wspominałem. Przypuszczam, że twój widok do wygenerowania pliku PDF po prostu zwraca HttpResponse z odpowiednim typem zawartości, zamiast renderowania odpowiedzi za pomocą Context, więc nie jest potrzebny. Ogólnie rzecz biorąc, current_app ma sens tylko wtedy, gdy podklasujesz szablon administracyjny używany przez twój niestandardowy widok, który faktycznie używa gdzieś current_app.

Przykład enkapsuluje adresy URL i widok w postaci ModelAdmin. Można to również zrobić podklasą AdminSite, ale przynajmniej w przypadku użycia jest to prawdopodobnie przesada.

Przy okazji, przesłonięcie szablonu change_form.html dla aplikacji, aby dodać przycisk do standardowego widoku zmian, jest w porządku. Nie ma specjalnych api do tego w administracji (niestety).

+0

Dzięki, ale wydaje mi się, że nie jestem wystarczająco doświadczony, aby wykorzystać twoją odpowiedź. Czy są przykłady w Internecie? – stschindler

+0

Zaktualizowałem moją odpowiedź i dodałem link do przykładu. –

Powiązane problemy