all(), get() i filter()
Poznać podstawowe sposoby pobierania obiektów
all(), get() i filter() 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.
Poznaj menedżera
Każdy model udostępnia bezpłatny menedżer objects. To punkt dostępu do bazy danych — każde zapytanie zaczyna się właśnie od niego. 🚪
Book.objectsPobierz wszystko
Wywołaj all(), aby pobrać wszystkie wiersze z tabeli. Otrzymasz QuerySet, po którym możesz iterować, zliczać jego elementy lub dalej go zawężać.
books = Book.objects.all()QuerySet to nie lista
QuerySet przypomina listę, ale działa leniwie. Django czeka z odwołaniem do bazy danych aż do chwili, gdy rzeczywiście użyjesz wyników.
Pobierz dokładnie jeden
Użyj get(), gdy oczekujesz jednego pasującego wiersza, na przykład rekordu znalezionego na podstawie klucza głównego.
book = Book.objects.get(pk=1)Gdy get() kończy się błędem
get() działa rygorystycznie. Jeśli nic nie pasuje, zgłasza DoesNotExist, dlatego używaj go tylko wtedy, gdy masz pewność, że istnieje dokładnie jeden wiersz.
Book.objects.get(pk=999)Zbyt wiele dopasowań
Jeśli get() znajdzie więcej niż jeden wiersz, zgłasza MultipleObjectsReturned. Ta metoda rzeczywiście wymaga jednego i tylko jednego wyniku.
Filtruj podzbiór
Użyj filter(), gdy chcesz pobrać wiersze spełniające warunek. Zwraca on QuerySet, nawet jeśli pasuje tylko jeden wiersz.
Book.objects.filter(published=True)filter() zwraca zero lub więcej wyników
W przeciwieństwie do get(), filter() nigdy nie zgłasza błędu, gdy nic nie pasuje. Zamiast tego otrzymujesz pusty QuerySet.
Book.objects.filter(author="Nobody")Wiele warunków
Przekaż kilka argumentów nazwanych do filter(), a Django połączy je operatorem AND. Każdy warunek musi być spełniony.
Book.objects.filter(published=True, year=2024)get i filter — szybkie porównanie
Użyj get() dla jednego gwarantowanego obiektu, a filter() dla kolekcji. Ten prosty wybór pozwala uniknąć większości błędów początkujących w zapytaniach.
Łącz filtry
Ponieważ filter() zwraca QuerySet, możesz łączyć wywołania, krok po kroku zawężając wyniki, zanim baza danych zostanie odpytana.
Book.objects.filter(published=True).filter(year=2024)Szybkie sprawdzenie
Oczekujesz jednej książki, ale nie ma dopasowania. Które wywołanie zgłosi błąd?
Podsumowanie
Świetna praca! all() pobiera wszystko, get() pobiera jeden dokładnie określony wiersz, a filter() zwraca podzbiór, który można dalej łączyć. 🎉
Ucz się Python dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 30
- Lekcje
- 120
Często zadawane pytania
Czy lekcja „all(), get() i filter()” jest bezpłatna?
Tak — pełny tekst „all(), get() i filter()” 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 „all(), get() i filter()”?
Poznać podstawowe sposoby pobierania obiektów Ć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 „all(), get() i filter()”?
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
- all(), get() i filter()
- Wyszukiwanie po polach i exclude()
- order_by, wycinanie i leniwa ewaluacja
- values, values_list i count