Browse files

[1.6.x] Fixed #22349 -- Added a note clarifying `RawQuerySet` has no …


Thanks cdestigter for the report.

Backport of 2d42511 from master
  • Loading branch information...
1 parent 15fe4ab commit 26983c4c6414f00a2bcf364436ecce0f5e73851d @mmardini mmardini committed with timgraham Jun 12, 2014
Showing with 14 additions and 1 deletion.
  1. +1 −0 AUTHORS
  2. +13 −1 docs/topics/db/sql.txt
@@ -396,6 +396,7 @@ answer newbie questions, and generally made Django that much better:
Javier Mansilla <>
+ Moayad Mardini <>
Petr Marhoun <>
Petar Marić <>
Nuno Mariz <>
@@ -33,7 +33,8 @@ return model instances:
This method takes a raw SQL query, executes it, and returns a
``django.db.models.query.RawQuerySet`` instance. This ``RawQuerySet`` instance
-can be iterated over just like a normal QuerySet to provide object instances.
+can be iterated over just like a normal
+:class:`~django.db.models.query.QuerySet` to provide object instances.
This is best illustrated with an example. Suppose you have the following model::
@@ -84,6 +85,17 @@ options that make it very powerful.
both rows will match. To prevent this, perform the correct typecasting
before using the value in a query.
+.. warning::
+ While a ``RawQuerySet`` instance can be iterated over like a normal
+ :class:`~django.db.models.query.QuerySet`, ``RawQuerySet`` doesn't
+ implement all methods you can use with ``QuerySet``. For example,
+ ``__bool__()`` and ``__len__()`` are not defined in ``RawQuerySet``, and
+ thus all ``RawQuerySet`` instances are considered ``True``. The reason
+ these methods are not implemented in ``RawQuerySet`` is that implementing
+ them without internal caching would be a performance drawback and adding
+ such caching would be backward incompatible.
Mapping query fields to model fields

0 comments on commit 26983c4

Please sign in to comment.