views:

77

answers:

2

Is it possible to perform a subquery on a QuerySet using another QuerySet?

For example:

q = Something.objects.filter(x=y).extra(where=query_set2)
+3  A: 

Short answer: No. The extra method doesn't expect querysets to be passed in.

If you think about it a bit, it makes sense. Querysets are an abstraction used to represent the results of a fetch operation on the database and extra is a convenient way of attaching custom fields from the database to a queryset. Unless you change the fundamental nature of extra to mean "custom filtering with another queryset" this will not work.

Manoj Govindan
+1, as always, good and educational answer.
rebus
+2  A: 

I may understand your question in two ways.

  1. You can specify multiple variables in your filter parameters, for example :

    q = Something.objects.filter(x=y, w=z)
    
  2. You want to make what is called a "join" in SQL. This can be done via the aggregation system of Django, see the official Django Official Documentation.

Soravux