Jeśli w panelu administracyjnym Django brakowało Ci możliwości jednoczesnej edycji wielu obiektów, teraz masz szansę to zmienić.
Wielbiciele frameworka Django zapewne zgodzą się ze stwierdzeniem, że jednym z jego większych atutów jest automatycznie generowany panel administracyjny, który odpowiednio dostosowany sprawdza się w całkiem szerokiej gamie aplikacji webowych. Jednak wraz z rosnącą ilością danych zarządzanie nimi w sposób zbiorowy staje się co raz trudniejsze, a czasami wręcz niemożliwe. System akcji częściowo rozwiązuje problem, jednak wymaga wcześniejszego zdefiniowania, jaka czynność ma być przeprowadzona zbiorowo na zaznaczonych obiektach i nie zapewnia żadnej interaktywności.
Django Mass Change Admin Site Extension (DMCASE), czyli rozszerzenie panelu administracyjnego pozwalające na zbiorowe zarządzanie obiektami pozwala wybrać, które elementy chcemy edytować, a następnie zmieniać zawartość poszczególnych pól na stronie podobnej do zwykłej strony edycji obiektu. Różnica polega na tym, że dodatkowo zaznaczamy zmiany z którego z pól mają zostać zaaplikowane do wszystkich uprzednio zaznaczonych obiektów. Sposób działania najprościej prześledzić na obrazkach zamieszczonych w oryginalnym wpisie.
Rozszerzenie jest dostępne na licencji BSD, czyli można go używać dowolnie pod warunkiem, że załączana będzie jego licencja. Link do pobierania w oryginalnym wpisie. Miłej zabawy!


Hm, odpaliłem i faktycznie działa. Problem w tym, że czasami potrzebuję zmienić coś masowo w 1000 wpisów, a one nie mieszczą się na jednej stronie w panelu admina i nie mogę wówczas skorzystać z tego udogodnienia bo wymaga on zaznaczenia obiektów do edycji. Czy autor ma jakiś pomysł na rozwiązanie tej niedogodności?
Hmm, racja. Pomysł mam taki, żeby zmienić trochę architekturę tego rozwiązania – oprzeć listę edytowanych obiektów o queryset, a nie na wyciąganej bezpośrednio z request’a z panelu admin’a liście id obiektów. Wówczas do systemu akcji podpięta mogłaby pozostać wersja, która generuje queryset z request’a adminowego, a niezależnie można by przygotować stronę, która pozwala skonstruować dowolny queryset. Mogłoby to być oparte o system filtrów w panelu admin’a albo o oddzielną stronkę, gdzie byłby filtr dla każdego pola albo zupełnie custom-owe zapytanie SQL-owe. Możliwości jest wiele, myślę jednak, że najważniejsze było zrobić ten pierwszy krok właśnie po to, żeby przeczytać takie uwagi.