Deklarowanie ModelForm i Meta.fields
Powiązanie formularza z modelem w kilku wierszach
Deklarowanie ModelForm i Meta.fields to bezpłatna lekcja Django Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Django Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Django Academy zawiera 4 lekcji w sumie.
Dlaczego istnieje ModelForm
Ma już Pan/Pani model opisujący dane. ModelForm tworzy formularz bezpośrednio na podstawie tego modelu, dzięki czemu nie trzeba definiować tych samych pól dwa razy. 🎯
Importowanie ModelForm
ModelForms znajdują się w tym samym miejscu co zwykłe formularze. Należy utworzyć klasę pochodną forms.ModelForm zamiast forms.Form, aby uzyskać wersję świadomą modelu.
from django import forms
from .models import PostKlasa Meta
ModelForm wymaga wewnętrznej klasy Meta. To w niej określa się, na podstawie którego modelu formularz jest tworzony oraz które pola ma zawierać.
class PostForm(forms.ModelForm):
class Meta:
model = Post
fields = ["title", "body"]Wskazywanie modelu
Atrybut model wskazuje klasę, którą odzwierciedla formularz. Django odczytuje pola tego modelu, aby automatycznie określić, jakie dane wejściowe formularza wygenerować.
class Meta:
model = PostJawne wyliczanie pól
Lista fields dokładnie określa, które pola modelu staną się danymi wejściowymi formularza. Ich wymienienie sprawia, że formularz jest celowy i chroni przed niespodziankami.
fields = ["title", "body", "published"]Skrót: fields = all
Ustawienie fields na ciąg "__all__" obejmuje wszystkie pola modelu. Jest to przydatne w przykładach, ale ryzykowne, ponieważ nowe pola modelu pojawią się automatycznie.
class Meta:
model = Post
fields = "__all__"Zamiast tego wykluczanie
Można odwrócić tę zasadę za pomocą exclude, aby zachować wszystko oprócz kilku pól. Dla przejrzystości, gdy to możliwe, warto preferować jawną listę fields.
class Meta:
model = Post
exclude = ["author"]Automatycznie generowane widgety
Django automatycznie dobiera odpowiedni widget do każdego pola. CharField staje się polem tekstowym, a BooleanField polem wyboru, bez dodatkowej pracy.
Walidacja w pakiecie
Reguły modelu również są uwzględniane. Pole oznaczone jako wymagane lub mające maksymalną długość przenosi tę samą walidację do formularza bez dodatkowej pracy.
Używanie w widoku
W widoku formularz tworzy się tak samo jak każdy inny formularz. Pusty PostForm() renderuje puste pola gotowe do wypełnienia przez użytkownika.
def create(request):
form = PostForm()
return render(request, "create.html", {"form": form})Powiązanie z instancją
Przekazanie istniejącego obiektu za pomocą instance wstępnie wypełnia wartości formularza. Ten sam ModelForm obsługuje teraz zarówno tworzenie, jak i edycję.
form = PostForm(instance=post)Szybkie sprawdzenie
Gdzie określa się, którego modelu i których pól ma używać ModelForm?
Podsumowanie: podstawy ModelForm
Dobra robota! ModelForm tworzy formularz na podstawie modelu, używając wewnętrznej klasy Meta z atrybutami model i fields. Unika się powtarzania i bez dodatkowej pracy dziedziczy walidację. ✨
Często zadawane pytania
Czy lekcja „Deklarowanie ModelForm i Meta.fields” jest bezpłatna?
Tak — pełny tekst „Deklarowanie ModelForm i Meta.fields” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Django Academy, przejdź na CoddyKit PRO. Kurs Django Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Deklarowanie ModelForm i Meta.fields”?
Powiązanie formularza z modelem w kilku wierszach Ćwiczysz Django Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Django Academy?
Nie wymagamy żadnego doświadczenia. Django Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Deklarowanie ModelForm i Meta.fields”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Django Academy?
Tak. Każda lekcja Django Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Deklarowanie ModelForm i Meta.fields
- form.save() i commit=False
- Własna walidacja za pomocą metod clean
- Widgets, Labels i Help Text