From 2d425116e2f26ab546c380784df1de79562009a7 Mon Sep 17 00:00:00 2001 From: Moayad Mardini Date: Thu, 12 Jun 2014 20:43:30 +0300 Subject: [PATCH] Fixed #22349 -- Added a note clarifying `RawQuerySet` has no `__len__`. Thanks cdestigter for the report. --- AUTHORS | 1 + docs/topics/db/sql.txt | 14 +++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/AUTHORS b/AUTHORS index 04b05d5549..beb067b94f 100644 --- a/AUTHORS +++ b/AUTHORS @@ -422,6 +422,7 @@ answer newbie questions, and generally made Django that much better: Javier Mansilla masonsimon+django@gmail.com Manuzhai + Moayad Mardini Petr Marhoun Petar Marić Nuno Mariz diff --git a/docs/topics/db/sql.txt b/docs/topics/db/sql.txt index 4a1b361f11..131e1d50db 100644 --- a/docs/topics/db/sql.txt +++ b/docs/topics/db/sql.txt @@ -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 ------------------------------------