Loading docs/db-api.txt +11 −0 Original line number Diff line number Diff line Loading @@ -1373,6 +1373,17 @@ SQL equivalent:: SELECT ... WHERE id IN (1, 3, 4); You can also use a queryset to dynamically evaluate the list of values instead of providing a list of literal values. The queryset must be reduced to a list of individual values using the ``values()`` method, and then converted into a query using the ``query`` attribute:: Entry.objects.filter(blog__in=Blog.objects.filter(name__contains='Cheddar').values('pk').query) This queryset will be evaluated as subselect statement:: SELET ... WHERE blog.id IN (SELECT id FROM ... WHERE NAME LIKE '%Cheddar%') startswith ~~~~~~~~~~ Loading tests/modeltests/many_to_one/models.py +6 −0 Original line number Diff line number Diff line Loading @@ -175,6 +175,12 @@ False >>> Article.objects.filter(reporter__in=[r,r2]).distinct() [<Article: John's second story>, <Article: Paul's story>, <Article: This is a test>] # You can also use a queryset instead of a literal list of instances. # The queryset must be reduced to a list of values using values(), # then converted into a query >>> Article.objects.filter(reporter__in=Reporter.objects.filter(first_name='John').values('pk').query).distinct() [<Article: John's second story>, <Article: This is a test>] # You need two underscores between "reporter" and "id" -- not one. >>> Article.objects.filter(reporter_id__exact=1) Traceback (most recent call last): Loading Loading
docs/db-api.txt +11 −0 Original line number Diff line number Diff line Loading @@ -1373,6 +1373,17 @@ SQL equivalent:: SELECT ... WHERE id IN (1, 3, 4); You can also use a queryset to dynamically evaluate the list of values instead of providing a list of literal values. The queryset must be reduced to a list of individual values using the ``values()`` method, and then converted into a query using the ``query`` attribute:: Entry.objects.filter(blog__in=Blog.objects.filter(name__contains='Cheddar').values('pk').query) This queryset will be evaluated as subselect statement:: SELET ... WHERE blog.id IN (SELECT id FROM ... WHERE NAME LIKE '%Cheddar%') startswith ~~~~~~~~~~ Loading
tests/modeltests/many_to_one/models.py +6 −0 Original line number Diff line number Diff line Loading @@ -175,6 +175,12 @@ False >>> Article.objects.filter(reporter__in=[r,r2]).distinct() [<Article: John's second story>, <Article: Paul's story>, <Article: This is a test>] # You can also use a queryset instead of a literal list of instances. # The queryset must be reduced to a list of values using values(), # then converted into a query >>> Article.objects.filter(reporter__in=Reporter.objects.filter(first_name='John').values('pk').query).distinct() [<Article: John's second story>, <Article: This is a test>] # You need two underscores between "reporter" and "id" -- not one. >>> Article.objects.filter(reporter_id__exact=1) Traceback (most recent call last): Loading