
ORM Django avancé
Raw SQL, custom managers, query expressions, database functions, atomic transactions, select_for_update, race conditions, database routers
1Quelle est la différence principale entre Model.objects.raw() et connection.cursor() pour exécuter du SQL brut dans Django ?
Quelle est la différence principale entre Model.objects.raw() et connection.cursor() pour exécuter du SQL brut dans Django ?
Réponse
Model.objects.raw() retourne des instances de modèle mappées automatiquement, ce qui permet de conserver les avantages de l'ORM comme l'accès aux attributs et aux relations. connection.cursor() retourne un curseur de base de données brut avec des tuples, offrant plus de flexibilité pour les requêtes non liées à un modèle spécifique, mais nécessitant une gestion manuelle des résultats.
2Quel est l'avantage principal de créer un custom Manager dans Django plutôt que d'ajouter des méthodes directement au modèle ?
Quel est l'avantage principal de créer un custom Manager dans Django plutôt que d'ajouter des méthodes directement au modèle ?
Réponse
Un custom Manager encapsule la logique de requêtes au niveau table, permettant de chaîner des méthodes avec le QuerySet et de réutiliser cette logique partout où le modèle est utilisé. Les méthodes de modèle opèrent sur des instances individuelles. Le Manager permet aussi de modifier le QuerySet par défaut avec get_queryset().
3Comment implémenter un custom QuerySet pour permettre le chaînage de méthodes personnalisées dans Django ?
Comment implémenter un custom QuerySet pour permettre le chaînage de méthodes personnalisées dans Django ?
Réponse
Pour permettre le chaînage, il faut créer une classe héritant de QuerySet avec des méthodes retournant self ou un QuerySet filtré. Ensuite, utiliser le custom QuerySet via Manager.from_queryset() ou définir un Manager personnalisé avec get_queryset() retournant le custom QuerySet. Cela permet d'appeler Model.objects.custom_method().filter().
Quelle expression Django utiliser pour incrémenter atomiquement un compteur dans la base de données sans risque de race condition ?
Quelle est la fonction de transaction.atomic() et comment gère-t-elle les exceptions dans Django ?
+25 questions d'entretien
Autres sujets d'entretien Django
Les bases de Python
Python orienté objet
Fondamentaux Django
Models Django - Bases
Vues Django
Templates Django
Formulaires Django
QuerySets avancés
Authentification Django
Middleware Django
Admin Django
Django REST Framework
Signaux Django
Upload de fichiers
Cache Django
Sessions Django
Email Django
Tests Django
Sécurité Django
Déploiement Django
Performance Django
Django & Celery
Django Channels
Django & GraphQL
Django & Docker
Django dans un écosystème Microservices
Commandes Django personnalisées
Internationalisation Django
Design Patterns Django
Django Async & ASGI
Settings & Configuration Production
Observabilité & Monitoring
Maîtrise Django pour ton prochain entretien
Accède à toutes les questions, flashcards, tests techniques, exercices de code review et simulateurs d'entretien.
Commencer gratuitement