select_related queryset not example equal descending django django-models django-queryset

not - Django Queryset en todos los modelos?



group by django (2)

Tengo varios modelos y quiero devolver un conjunto de consulta de todos los modelos que pertenecen a un usuario. Me pregunto si es posible devolver un Queryset de varios modelos.


Sus modelos deben contener campos de relación (ForeigKey y ManyToManyField), con el argumento de palabra clave related_name establecido. Consulte la documentación aquí .


Supongo que quiere decir que desea devolver un solo conjunto de consulta de todos los objetos que pertenecen al usuario de cada modelo.

¿Necesitas un queryset o solo un iterable? AFAIK, los qs heterogéneos no son posibles. Sin embargo, puede devolver fácilmente una lista, un iterador encadenado (itertools) o un generador para hacer lo que desee. Esto supone que los modelos que hacen referencia al usuario se conocen con anticipación. Suponiendo default_name, se podría acceder a los atributos de queryset relacionados desde la instancia del usuario a través del nombre del modelo:

qs = getattr(user, ''%s_set'' % model_name.lower());

Por supuesto, al utilizar cualquier lista heterogénea, solo podrá usar campos o métodos que estén definidos en todos esos modelos, o deberá determinar el tipo de cada objeto para realizar acciones específicas de tipo.