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.