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.