Paweł Kot

Python Django – Panel Admina i jego modyfikacja

admin

Jedną z fajniejszych opcji jaką posiada Django to generowany automatycznie panel admina, w którym możemy na żywo zarządzać zasobami naszej aplikacji, albo na szybko coś testować.

Sam panel przy tworzeniu naszej aplikacji dodawany jest automatycznie i możemy się do niego dostać wpisując localhost:8000/admin. Ważne: by się do niego zalogować musimy mieć stworzonego tzw. superusera. Jak mamy nową aplikacje to wklepujemy dwie komendy:

python manage.py migrate
python manage.py createsuperuser

Następnie wpisujemy login, hasło, email (opcjonalnie) i gotowe.

Sam panel admina to niezbyt skomplikowana rzecz, można powiedzieć, że początkowo to typowy CRUD, do którego podłączamy kolejne nasze modele by nimi zarządzać (dodawać, usuwać, edytować).

Podłączenie modelu do admina

By podłączyć nasz model do panelu musimy w naszej aplikacji wejść w plik admin.py i go najzwyczajniej zarejestrować.

Przykładowy prosty model

class Person(models.Model):
  first_name = models.CharField(max_length=40)
  last_name = models.CharField(max_length=40)

  class Meta:
    verbose_name = 'Person'

  def __str__(self):
    return "{} {}".format(self.first_name, self.last_name)

Rejestracja naszego modelu w adminie przez dekorator @admin.register(Model) <- w nawiasach wpisujemy nasz model

from django.contrib import admin

from .models import Person

@admin.register(Person)
class AdminPerson(admin.ModelAdmin):
  list_display = ['first_name', 'last_name']

Rejestracja tego samego modelu bez dekoratora

from django.contrib import admin

from .models import Person

class AdminPerson(admin.ModelAdmin):
  list_display = ['first_name', 'last_name']

admin.site.register(Person, AdminPerson)

Po odświeżeniu pojawiła się nowa sekcja ‘Person’, w której możemy dodawać, usuwać i edytować dane modelu.

Warto oczywiście przejrzeć dokładnie dokumentacje, w której znajdziemy sporo przykładów: https://docs.djangoproject.com/en/2.2/ref/contrib/admin/