Browse Source

Doc'd that RawSQL can be used with __in.

Simon Willison 4 years ago
parent
commit
e53159747c
1 changed files with 5 additions and 1 deletions
  1. 5 1
      docs/ref/models/expressions.txt

+ 5 - 1
docs/ref/models/expressions.txt

@@ -699,12 +699,16 @@ Sometimes database expressions can't easily express a complex ``WHERE`` clause.
 In these edge cases, use the ``RawSQL`` expression. For example::
 In these edge cases, use the ``RawSQL`` expression. For example::
 
 
     >>> from django.db.models.expressions import RawSQL
     >>> from django.db.models.expressions import RawSQL
-    >>> queryset.annotate(val=RawSQL("select col from sometable where othercol = %s", (someparam,)))
+    >>> queryset.annotate(val=RawSQL("select col from sometable where othercol = %s", (param,)))
 
 
 These extra lookups may not be portable to different database engines (because
 These extra lookups may not be portable to different database engines (because
 you're explicitly writing SQL code) and violate the DRY principle, so you
 you're explicitly writing SQL code) and violate the DRY principle, so you
 should avoid them if possible.
 should avoid them if possible.
 
 
+``RawSQL`` expressions can also be used as the target of ``__in`` filters::
+
+    >>> queryset.filter(id__in=RawSQL("select id from sometable where col = %s", (param,)))
+
 .. warning::
 .. warning::
 
 
     To protect against `SQL injection attacks
     To protect against `SQL injection attacks