Panel administracyjny w Django
Jednym z największych atutów Django jest wbudowany panel administracyjny. Pozwala on w prosty sposób zarządzać danymi w bazie (dodawać, edytować, usuwać rekordy), bez konieczności pisania własnych formularzy.
1. Logowanie do admina
1. Uruchomienie panelu
Po utworzeniu projektu, w pliku myproject/urls.py znajduje się już domyślna ścieżka:
Dzięki temu panel dostępny jest pod adresem:
http://127.0.0.1:8000/admin/
2. Utworzenie superużytkownika
Aby się zalogować, musisz mieć konto administracyjne:
Następnie podajesz:
- nazwę użytkownika,
- adres e-mail (opcjonalnie),
- hasło.
3. Logowanie
Po uruchomieniu serwera (python manage.py runserver) wchodzisz na /admin/, wpisujesz dane i dostajesz dostęp do panelu.
2. Rejestracja modeli w panelu
Aby modele były widoczne w panelu, muszą zostać zarejestrowane w admin.py w aplikacji.
Przykład:
Po rejestracji w panelu pojawią się sekcje odpowiadające modelom, umożliwiające dodawanie i edycję rekordów.
3. Dostosowywanie panelu (list_display, search, filter)
Panel admina można konfigurować, aby był bardziej przejrzysty i użyteczny. Do tego służy klasa konfiguracyjna dziedzicząca po admin.ModelAdmin.
1. Wyświetlanie dodatkowych kolumn – list_display
Domyślnie widzimy tylko __str__(), ale można dodać inne pola:
W panelu lista postów będzie miała kolumny: tytuł, data utworzenia i ID.
2. Wyszukiwanie – search_fields
Pozwala wyszukiwać rekordy po określonych polach:
Na górze listy pojawi się pole wyszukiwania.
3. Filtry boczne – list_filter
Dodaje panel filtrów z lewej strony (np. po dacie, kategorii):
4. Edycja pól w liście – list_editable
Pozwala edytować niektóre pola bez otwierania formularza szczegółów:
5. Organizacja formularzy – fields, fieldsets
Możemy ustalić kolejność pól albo pogrupować je w sekcje.
Prosty układ (fields):
Zaawansowany układ (fieldsets):
6. Inne przydatne opcje
ordering = ('-created_at',)– sortowanie rekordów.readonly_fields = ('created_at',)– pole tylko do odczytu.date_hierarchy = 'created_at'– pasek do filtrowania po dacie u góry listy.