|
@@ -1768,22 +1768,6 @@ This queryset will be evaluated as subselect statement::
|
|
|
|
|
|
SELECT ... WHERE blog.id IN (SELECT id FROM ... WHERE NAME LIKE '%Cheddar%')
|
|
|
|
|
|
-The above code fragment could also be written as follows::
|
|
|
-
|
|
|
- inner_q = Blog.objects.filter(name__contains='Cheddar').values('pk').query
|
|
|
- entries = Entry.objects.filter(blog__in=inner_q)
|
|
|
-
|
|
|
-.. warning::
|
|
|
-
|
|
|
- This ``query`` attribute should be considered an opaque internal attribute.
|
|
|
- It's fine to use it like above, but its API may change between Django
|
|
|
- versions.
|
|
|
-
|
|
|
-This second form is a bit less readable and unnatural to write, since it
|
|
|
-accesses the internal ``query`` attribute and requires a ``ValuesQuerySet``.
|
|
|
-If your code doesn't require compatibility with Django 1.0, use the first
|
|
|
-form, passing in a queryset directly.
|
|
|
-
|
|
|
If you pass in a ``ValuesQuerySet`` or ``ValuesListQuerySet`` (the result of
|
|
|
calling ``values()`` or ``values_list()`` on a queryset) as the value to an
|
|
|
``__in`` lookup, you need to ensure you are only extracting one field in the
|