Doc'd that RawSQL can be used with __in.
This commit is contained in:
parent
f3825248a2
commit
e53159747c
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue