
Django ORM avanzado
Raw SQL, custom managers, query expressions, database functions, atomic transactions, select_for_update, race conditions, database routers
1¿Cuál es la diferencia principal entre Model.objects.raw() y connection.cursor() para ejecutar raw SQL en Django?
¿Cuál es la diferencia principal entre Model.objects.raw() y connection.cursor() para ejecutar raw SQL en Django?
Respuesta
Model.objects.raw() devuelve instancias de modelo mapeadas automáticamente, conservando los beneficios del ORM como el acceso a atributos y relaciones. connection.cursor() devuelve un cursor de base de datos en bruto con tuplas, ofreciendo más flexibilidad para consultas no ligadas a un modelo específico, pero requiriendo un manejo manual de los resultados.
2¿Cuál es la ventaja principal de crear un custom Manager en Django en lugar de agregar métodos directamente al modelo?
¿Cuál es la ventaja principal de crear un custom Manager en Django en lugar de agregar métodos directamente al modelo?
Respuesta
Un custom Manager encapsula la lógica de consultas a nivel de tabla, permitiendo encadenar métodos con el QuerySet y reutilizar esta lógica en cualquier lugar donde se use el modelo. Los métodos de modelo operan sobre instancias individuales. El Manager también permite modificar el QuerySet por defecto con get_queryset().
3¿Cómo implementar un custom QuerySet para permitir el encadenamiento de métodos personalizados en Django?
¿Cómo implementar un custom QuerySet para permitir el encadenamiento de métodos personalizados en Django?
Respuesta
Para permitir el encadenamiento, hay que crear una clase que herede de QuerySet con métodos que devuelvan self o un QuerySet filtrado. Luego, usar el custom QuerySet mediante Manager.from_queryset() o definir un Manager personalizado con get_queryset() que devuelva el custom QuerySet. Esto permite llamar a Model.objects.custom_method().filter().
¿Qué expresión de Django usar para incrementar atómicamente un contador en la base de datos sin riesgo de race condition?
¿Cuál es la función de transaction.atomic() y cómo maneja las excepciones en Django?
+25 preguntas de entrevista
Otros temas de entrevista Django
Fundamentos de Python
Python orientado a objetos
Fundamentos de Django
Models Django - Fundamentos
Vistas de Django
Plantillas Django
Formularios Django
QuerySets avanzados
Autenticación en Django
Middleware de Django
Django Admin
Django REST Framework
Señales de Django
Carga de archivos
Caché de Django
Sesiones de Django
Email en Django
Testing en Django
Seguridad de Django
Despliegue de Django
Rendimiento de Django
Django & Celery
Django Channels
Django & GraphQL
Django & Docker
Django en un ecosistema de microservicios
Comandos personalizados de Django
Internacionalización en Django
Patrones de Diseño en Django
Django Async y ASGI
Settings y configuración de producción
Observabilidad y monitoreo
Domina Django para tu próxima entrevista
Accede a todas las preguntas, flashcards, tests técnicos, ejercicios de code review y simuladores de entrevista.
Empieza gratis