Inlines i pola tylko do odczytu
Edytować powiązane rekordy bezpośrednio i chronić pola
Inlines i pola tylko do odczytu to bezpłatna lekcja Django Academy na CoddyKit. To lekcja 4 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.
Edytuj powiązane wiersze razem
Czasami powiązane rekordy powinny znajdować się na tej samej stronie. Element inline pozwala edytować wiersze podrzędne bezpośrednio w formularzu edycji elementu nadrzędnego. 🧩
Dwa style elementów inline
Django oferuje dwa układy. TabularInline wyświetla wiersze w zwartej tabeli, a StackedInline układa każdy wiersz jako osobny blok.
Zdefiniuj element inline
Utwórz niewielką klasę będącą podklasą TabularInline i ustaw jej atrybut model na model podrzędny, który chcesz osadzić.
class CommentInline(admin.TabularInline):
model = CommentPodłącz do elementu nadrzędnego
Dodaj element inline do panelu administracyjnego elementu nadrzędnego. Opcja inlines informuje Django, aby renderowało te wiersze podrzędne wewnątrz formularza elementu nadrzędnego.
class PostAdmin(admin.ModelAdmin):
inlines = [CommentInline]Dodatkowe puste wiersze
Elementy inline wyświetlają puste wiersze, aby ułatwić dodawanie danych. Ustaw extra, aby określić liczbę pustych miejsc — często wystarczy jedno.
extra = 1Wymaganie dotyczące FK
Elementy inline działają tylko wtedy, gdy model podrzędny ma ForeignKey do elementu nadrzędnego. To powiązanie pozwala Django rozpoznać, które wiersze należą do siebie.
Zabezpiecz pole
Niektóre wartości powinny być widoczne, ale nigdy nieedytowane ręcznie. Dodaj je do readonly_fields, a panel administracyjny wyświetli je jako zablokowane. 🔒
readonly_fields = ("created", "updated")Automatyczne znaczniki czasu
Pola takie jak data ustawiana przez auto_now_add są wypełniane przez Django, a nie przez użytkowników. Oznaczenie ich jako readonly zapobiega mylącym zmianom, których nie można zapisać.
Wyświetl obliczoną wartość
readonly_fields może również zawierać nazwę metody, co pozwala wyświetlać obliczoną wartość, która nie ma rzeczywistej kolumny w bazie danych.
def word_count(self, obj):
return len(obj.body.split())readonly wewnątrz elementów inline
Elementy inline również obsługują readonly_fields. Użyj tej opcji, aby przejrzyście wyświetlać dane podrzędne, jednocześnie uniemożliwiając edycję wrażliwych kolumn.
Uprawnienia nadal obowiązują
Readonly dotyczy formularza, a nie bezpieczeństwa. Rzeczywisty dostęp określają uprawnienia użytkownika, dlatego w celu zapewnienia bezpiecznej edycji należy stosować oba mechanizmy.
Szybkie sprawdzenie
Co jest wymagane, aby model pojawił się jako element inline?
Podsumowanie
Osadziłeś powiązane wiersze za pomocą inlines i zablokowałeś wrażliwe wartości przy użyciu readonly_fields. Razem zapewniają one rozbudowaną, a jednocześnie bezpieczną edycję w panelu administracyjnym. ✅
Często zadawane pytania
Czy lekcja „Inlines i pola tylko do odczytu” jest bezpłatna?
Tak — pełny tekst „Inlines i pola tylko do odczytu” 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 „Inlines i pola tylko do odczytu”?
Edytować powiązane rekordy bezpośrednio i chronić pola Ć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 4 z 4.
Ile czasu zajmuje lekcja „Inlines i pola tylko do odczytu”?
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
- createsuperuser i logowanie
- Rejestrowanie modeli za pomocą admin.site
- Dostosowywanie ModelAdmin
- Inlines i pola tylko do odczytu