En mi caso específico, tengo dos tipos de "mensajes" que necesito recuperar y paginar.Usando django ¿cómo puedo combinar dos consultas de modelos separados en una consulta?
Vamos a omitir los detalles, y sólo decir que el primer tipo se encuentra en un modelo llamado Msg1 y el otro se llama Msg2
Los campos de estos dos modelos son completamente diferentes, los únicos campos que son comunes a la dos modelos son "fecha" y "título" (y por supuesto, id).
Puedo obtener Msg1.objects.all()
y Msg2.objects.all()
, pero ¿puedo combinar estas dos consultas en una consulta, ordenarla por fecha y paginarla?
Necesito preservar la naturaleza perezosa de la consulta.
La solución trivial es list(query)
ambas consultas y combinarlas en una lista de Python. pero esto es ineficiente por razones obvias.
Miré las referencias de django en modelos y dp-api, pero no parece que haya una forma de combinar consultas de diferentes modelos/tablas en una sola.
"ineficiente por razones obvias" ¿De verdad? ¿Tienes métricas? Lo pregunto porque no hay una razón obvia de por qué sería ineficiente. –
Creo que porque una vez que lista (consulta) obtiene todos los resultados, y quiere dejar eso lo más tarde posible. –
ineficaz porque golpea la base de datos para TODOS los elementos, (podría ser 1000) mientras que solo muestra 20 por página o así .. – hasen