mirror of
https://github.com/django/django.git
synced 2025-10-24 14:16:09 +00:00
Fixed #9926 -- Fixes for some select_related() situations.
Using select_related(...) across a nullable relation to a multi-table model inheritance situation no longer excludes results. Thanks to AdamG for a test demonstrating part of the problem. git-svn-id: http://code.djangoproject.com/svn/django/trunk@10136 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
@@ -16,10 +16,17 @@ try:
|
||||
except NameError:
|
||||
from django.utils.itercompat import sorted
|
||||
|
||||
class DumbCategory(models.Model):
|
||||
pass
|
||||
|
||||
class NamedCategory(DumbCategory):
|
||||
name = models.CharField(max_length=10)
|
||||
|
||||
class Tag(models.Model):
|
||||
name = models.CharField(max_length=10)
|
||||
parent = models.ForeignKey('self', blank=True, null=True,
|
||||
related_name='children')
|
||||
category = models.ForeignKey(NamedCategory, null=True, default=None)
|
||||
|
||||
class Meta:
|
||||
ordering = ['name']
|
||||
@@ -266,8 +273,9 @@ class Plaything(models.Model):
|
||||
|
||||
|
||||
__test__ = {'API_TESTS':"""
|
||||
>>> t1 = Tag.objects.create(name='t1')
|
||||
>>> t2 = Tag.objects.create(name='t2', parent=t1)
|
||||
>>> generic = NamedCategory.objects.create(name="Generic")
|
||||
>>> t1 = Tag.objects.create(name='t1', category=generic)
|
||||
>>> t2 = Tag.objects.create(name='t2', parent=t1, category=generic)
|
||||
>>> t3 = Tag.objects.create(name='t3', parent=t1)
|
||||
>>> t4 = Tag.objects.create(name='t4', parent=t3)
|
||||
>>> t5 = Tag.objects.create(name='t5', parent=t3)
|
||||
@@ -726,6 +734,12 @@ Bug #6981
|
||||
>>> Tag.objects.select_related('parent').order_by('name')
|
||||
[<Tag: t1>, <Tag: t2>, <Tag: t3>, <Tag: t4>, <Tag: t5>]
|
||||
|
||||
Bug #9926
|
||||
>>> Tag.objects.select_related("parent", "category").order_by('name')
|
||||
[<Tag: t1>, <Tag: t2>, <Tag: t3>, <Tag: t4>, <Tag: t5>]
|
||||
>>> Tag.objects.select_related('parent', "parent__category").order_by('name')
|
||||
[<Tag: t1>, <Tag: t2>, <Tag: t3>, <Tag: t4>, <Tag: t5>]
|
||||
|
||||
Bug #6180, #6203 -- dates with limits and/or counts
|
||||
>>> Item.objects.count()
|
||||
4
|
||||
|
||||
Reference in New Issue
Block a user