views:

1040

answers:

2

I have several Models and want to return a queryset of all the Models belonging to a User, I'm wondering if its possible to return one Queryset from multiple Models?

+2  A: 

Your models must contain relationship fields (ForeigKey and ManyToManyField), with related_name keyword argument set. Check documentation here.

Lazin
+4  A: 

I am assuming that you mean you would like to return a single queryset of all the objects belonging to the user from each model.

Do you need a queryset or just an iterable? AFAIK, heterogeneous qs's are not possible. However, you could easily return a list, a chained iterator (itertools) or a generator to do what you want. This assumes that the models referencing the user are known ahead of time. Assuming default related_name, related queryset attributes could be accessed from user instance via the model's name:

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

Of course, using any heterogeneous list you would either only be able to use fields or methods that are defined across all such models, or you would have to determine the type of each object to do any type specific actions.

AmanKow