Fixed #7371 -- Fixed an edge case when ordering on related models.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@7786 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
c17e326585
commit
050d0a1b75
|
@ -626,6 +626,11 @@ class Query(object):
|
||||||
alias, False)
|
alias, False)
|
||||||
alias = joins[-1]
|
alias = joins[-1]
|
||||||
col = target.column
|
col = target.column
|
||||||
|
if not field.rel:
|
||||||
|
# To avoid inadvertent trimming of a necessary alias, use the
|
||||||
|
# refcount to show that we are referencing a non-relation field on
|
||||||
|
# the model.
|
||||||
|
self.ref_alias(alias)
|
||||||
|
|
||||||
# Must use left outer joins for nullable fields.
|
# Must use left outer joins for nullable fields.
|
||||||
for join in joins:
|
for join in joins:
|
||||||
|
|
|
@ -172,6 +172,17 @@ class Child(models.Model):
|
||||||
person = models.OneToOneField(Member, primary_key=True)
|
person = models.OneToOneField(Member, primary_key=True)
|
||||||
parent = models.ForeignKey(Member, related_name="children")
|
parent = models.ForeignKey(Member, related_name="children")
|
||||||
|
|
||||||
|
# Custom primary keys interfered with ordering in the past.
|
||||||
|
class CustomPk(models.Model):
|
||||||
|
name = models.CharField(max_length=10, primary_key=True)
|
||||||
|
extra = models.CharField(max_length=10)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
ordering = ['name', 'extra']
|
||||||
|
|
||||||
|
class Related(models.Model):
|
||||||
|
custom = models.ForeignKey(CustomPk)
|
||||||
|
|
||||||
|
|
||||||
__test__ = {'API_TESTS':"""
|
__test__ = {'API_TESTS':"""
|
||||||
>>> t1 = Tag.objects.create(name='t1')
|
>>> t1 = Tag.objects.create(name='t1')
|
||||||
|
@ -786,5 +797,9 @@ Bug #7277
|
||||||
>>> n1.annotation_set.filter(Q(tag=t5) | Q(tag__children=t5) | Q(tag__children__children=t5))
|
>>> n1.annotation_set.filter(Q(tag=t5) | Q(tag__children=t5) | Q(tag__children__children=t5))
|
||||||
[<Annotation: a1>]
|
[<Annotation: a1>]
|
||||||
|
|
||||||
|
Bug #7371
|
||||||
|
>>> Related.objects.order_by('custom')
|
||||||
|
[]
|
||||||
|
|
||||||
"""}
|
"""}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue