
Fortgeschrittenes Django ORM
Raw SQL, custom managers, query expressions, database functions, atomic transactions, select_for_update, race conditions, database routers
1Was ist der Hauptunterschied zwischen Model.objects.raw() und connection.cursor() beim Ausführen von raw SQL in Django?
Was ist der Hauptunterschied zwischen Model.objects.raw() und connection.cursor() beim Ausführen von raw SQL in Django?
Antwort
Model.objects.raw() gibt automatisch zugeordnete Modellinstanzen zurück und bewahrt ORM-Vorteile wie Attributzugriff und Relationen. connection.cursor() gibt einen rohen Datenbank-Cursor mit Tupeln zurück und bietet mehr Flexibilität für Abfragen, die nicht an ein bestimmtes Modell gebunden sind, erfordert jedoch eine manuelle Ergebnisverarbeitung.
2Was ist der Hauptvorteil, einen custom Manager in Django zu erstellen, anstatt Methoden direkt zum Modell hinzuzufügen?
Was ist der Hauptvorteil, einen custom Manager in Django zu erstellen, anstatt Methoden direkt zum Modell hinzuzufügen?
Antwort
Ein custom Manager kapselt die Abfragelogik auf Tabellenebene, ermöglicht Methodenverkettung mit QuerySets und die Wiederverwendung dieser Logik überall dort, wo das Modell verwendet wird. Modellmethoden operieren auf einzelnen Instanzen. Der Manager erlaubt es auch, das Standard-QuerySet mit get_queryset() zu ändern.
3Wie implementiert man ein custom QuerySet, um die Verkettung benutzerdefinierter Methoden in Django zu ermöglichen?
Wie implementiert man ein custom QuerySet, um die Verkettung benutzerdefinierter Methoden in Django zu ermöglichen?
Antwort
Um Verkettung zu ermöglichen, erstellt man eine von QuerySet erbende Klasse mit Methoden, die self oder ein gefiltertes QuerySet zurückgeben. Dann verwendet man das custom QuerySet über Manager.from_queryset() oder definiert einen custom Manager mit get_queryset(), das das custom QuerySet zurückgibt. Dies ermöglicht den Aufruf von Model.objects.custom_method().filter().
Welcher Django-Ausdruck wird verwendet, um einen Zähler in der Datenbank atomar ohne Race-Condition-Risiko zu inkrementieren?
Was ist die Funktion von transaction.atomic() und wie behandelt es Ausnahmen in Django?
+25 Interview-Fragen
Weitere Django-Interviewthemen
Python-Grundlagen
Objektorientiertes Python
Django-Grundlagen
Django Models - Grundlagen
Django Views
Django-Templates
Django-Formulare
Erweiterte QuerySets
Django-Authentifizierung
Django-Middleware
Django Admin
Django REST Framework
Django-Signale
Datei-Upload
Django Caching
Django-Sessions
Django E-Mail
Django-Testing
Django-Sicherheit
Django-Deployment
Django-Performance
Django & Celery
Django Channels
Django & GraphQL
Django & Docker
Django im Microservices-Ökosystem
Benutzerdefinierte Django-Befehle
Django-Internationalisierung
Django Design Patterns
Django Async & ASGI
Settings & Produktionskonfiguration
Observability & Monitoring
Meistere Django für dein nächstes Interview
Zugang zu allen Fragen, Flashcards, technischen Tests, Code-Review-Übungen und Interview-Simulatoren.
Kostenlos starten