11. diel - REST API v Django REST - Filtrovanie filmov
V predchádzajúcej lekcii, REST API v Django REST - Serializer a ViewSet filmov , sme pre entitu filmu v našom projekte doplnili serializer, ViewSet a nastavili URL adresy.
V tomto Python tutoriále sa zameriame na implementáciu
filtrovania filmov v našej Django REST API.
Umožníme užívateľovi filtrovať filmy podľa hercov,
režiséra, žánru a roku
vydania. Rovnako ako pri filtrovaní osôb pridáme aj možnosť
obmedzenia počtu výsledkov pomocou parametra
limit.
Vytvorenie triedy
MovieService
V priečinku api/services/ vytvoríme nový súbor s názvom
movie_service.py. Bude obsahovať triedu MovieService
a jej statickú metódu get_filtered_queryset(), ktorá na základe
zadaných parametrov vráti vyfiltrovaný queryset.
Súbor upravíme do nasledujúcej podoby:
from ..models import Movie class MovieService: @staticmethod def get_filtered_queryset(director_id=None, actor_id=None, genre=None, from_year=None, to_year=None, limit=None): queryset = Movie.objects.all()
Filtrácia podľa osôb a žánru
V premennej queryset sú zatiaľ uložené všetky
filmy. Pomocou zadaných parametrov ich budeme postupne filtrovať.
Rozšírime preto metódu get_filtered_queryset() o
...koniec náhľadu článku...
Pokračuj ďalej
Došiel si až sem a to je super! Veríme, že ti prvé lekcie ukázali niečo nového a užitočného.
Chceš v kurze pokračovať? Prejdi do prémiové sekcie.
Kúpiť iba tento kurz
Získaj okamžitý prístup ku kurzu bez
časového obmedzenia.
1 220 kreditov
Pred kúpou tohto článku je potrebné kúpiť predchádzajúci diel
Obsah článku spadá pod licenciu Premium III, kúpou článku súhlasíš so zmluvnými podmienkami.
- Prístup k jednotlivým lekciám podľa spôsobu obstarania.
- Kvalitné znalosti v oblasti IT.
- Zručnosti, ktoré ti pomôžu získať vysnívanú a dobre platenú prácu.
Popis článku
Požadovaný článok má nasledujúci obsah:
V tutoriáli REST API v Python frameworku Django sprevádzkováme filtrovanie filmov pomocou Django ORM a dokončíme tým prácu s entitou filmu.
Kredity získaš, keď podporíš našu sieť. To môžeš urobiť buď zaslaním symbolickej sumy na podporu prevádzky alebo pridaním obsahu na sieť.