9

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?

1

2 Answers 2

8

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.

Sign up to request clarification or add additional context in comments.

Comments

3

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.