Kaydet (Commit) 61cc4a1e authored tarafından Malcolm Tredinnick's avatar Malcolm Tredinnick

Fixed #8819 -- Don't include two copies of extra-select columns in the query.

This was triggered by r8794, but was, in fact, fairly fragile before then. The
current fix is the correct way we should be doing this.


git-svn-id: http://code.djangoproject.com/svn/django/trunk@8898 bcc190cf-cafb-0310-a4f2-bffc1f526a37
üst d2ca6fd5
......@@ -630,7 +630,7 @@ class Query(object):
else:
col, order = get_order_dir(field, asc)
elt = qn2(col)
if distinct and elt not in select_aliases:
if distinct and col not in select_aliases:
ordering_aliases.append(elt)
result.append('%s %s' % (elt, order))
self.ordering_aliases = ordering_aliases
......
......@@ -98,4 +98,13 @@ True
>>> Order.objects.extra(where=["username=%s"], params=["fred"], tables=["auth_user"]).order_by('created_by')
[]
# Regression test for #8819: Fields in the extra(select=...) list should be
# available to extra(order_by=...).
>>> User.objects.extra(select={'extra_field': 1}).distinct()
[<User: fred>]
>>> User.objects.extra(select={'extra_field': 1}, order_by=['extra_field'])
[<User: fred>]
>>> User.objects.extra(select={'extra_field': 1}, order_by=['extra_field']).distinct()
[<User: fred>]
"""}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment