summaryrefslogtreecommitdiff
path: root/docs/ref
diff options
context:
space:
mode:
authorAdrian Holovaty <adrian@holovaty.com>2011-12-30 18:01:34 +0000
committerAdrian Holovaty <adrian@holovaty.com>2011-12-30 18:01:34 +0000
commitd3ef13044e73c64e7f8f46c5030040a5566012b3 (patch)
tree798c9181bc542e895a3ff7d566c253a61fcf9d5d /docs/ref
parentafb21094a9fefd157f22b9706026625b66d10048 (diff)
Edited doc changes from [17244]
git-svn-id: http://code.djangoproject.com/svn/django/trunk@17302 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'docs/ref')
-rw-r--r--docs/ref/models/querysets.txt26
1 files changed, 16 insertions, 10 deletions
diff --git a/docs/ref/models/querysets.txt b/docs/ref/models/querysets.txt
index b7bc647981..11e23c0250 100644
--- a/docs/ref/models/querysets.txt
+++ b/docs/ref/models/querysets.txt
@@ -376,20 +376,26 @@ query spans multiple tables, it's possible to get duplicate results when a
.. versionadded:: 1.4
-The possibility to pass positional arguments (``*fields``) is new in Django 1.4.
-They are names of fields to which the ``DISTINCT`` should be limited. This
-translates to a ``SELECT DISTINCT ON`` SQL query. A ``DISTINCT ON`` query eliminates
-duplicate rows not by comparing all fields in a row, but by comparing only the given
-fields.
+As of Django 1.4, you can pass positional arguments (``*fields``) in order to
+specify the names of fields to which the ``DISTINCT`` should apply. This
+translates to a ``SELECT DISTINCT ON`` SQL query.
+
+Here's the difference. For a normal ``distinct()`` call, the database compares
+*each* field in each row when determining which rows are distinct. For a
+``distinct()`` call with specified field names, the database will only compare
+the specified field names.
.. note::
- Note that the ability to specify field names is only available in PostgreSQL.
+ This ability to specify field names is only available in PostgreSQL.
.. note::
- When using the ``DISTINCT ON`` functionality it is required that the columns given
- to :meth:`distinct` match the first :meth:`order_by` columns. For example ``SELECT
- DISTINCT ON (a)`` gives you the first row for each value in column ``a``. If you
- don't specify an order, then you'll get some arbitrary row.
+ When you specify field names, you *must* provide an ``order_by()`` in the
+ QuerySet, and the fields in ``order_by()`` must start with the fields in
+ ``distinct()``, in the same order.
+
+ For example, ``SELECT DISTINCT ON (a)`` gives you the first row for each
+ value in column ``a``. If you don't specify an order, you'll get some
+ arbitrary row.
Examples::