Django

Geavanceerde Django ORM

Raw SQL, custom managers, query expressions, database functions, atomic transactions, select_for_update, race conditions, database routers

28 gespreksvragen·
Senior
1

Wat is het belangrijkste verschil tussen Model.objects.raw() en connection.cursor() voor het uitvoeren van raw SQL in Django?

Antwoord

Model.objects.raw() retourneert automatisch gemapte modelinstanties en behoudt ORM-voordelen zoals attribuuttoegang en relaties. connection.cursor() retourneert een ruwe database-cursor met tuples, wat meer flexibiliteit biedt voor query's die niet aan een specifiek model zijn gebonden, maar handmatige verwerking van resultaten vereist.

2

Wat is het belangrijkste voordeel van het maken van een custom Manager in Django in plaats van methodes direct aan het model toe te voegen?

Antwoord

Een custom Manager kapselt query-logica op tabelniveau in, maakt methodeketening met QuerySets mogelijk en hergebruikt deze logica overal waar het model wordt gebruikt. Modelmethodes werken op individuele instanties. De Manager maakt het ook mogelijk de standaard-QuerySet aan te passen met get_queryset().

3

Hoe implementeer je een custom QuerySet om ketening van aangepaste methodes in Django mogelijk te maken?

Antwoord

Om ketening mogelijk te maken, maak je een klasse die overerft van QuerySet met methodes die self of een gefilterde QuerySet retourneren. Gebruik vervolgens de custom QuerySet via Manager.from_queryset() of definieer een custom Manager met get_queryset() die de custom QuerySet retourneert. Hiermee kun je Model.objects.custom_method().filter() aanroepen.

4

Welke Django-expressie gebruik je om een teller in de database atomair te verhogen zonder risico op een race condition?

5

Wat is de functie van transaction.atomic() en hoe gaat het om met excepties in Django?

+25 gespreksvragen

Beheers Django voor je volgende gesprek

Krijg toegang tot alle vragen, flashcards, technische tests, code review-oefeningen en gespreksimulatoren.

Begin gratis