Fixed #23550 -- Normalized get_queryset() of RelatedObjectDescriptor

and ReverseSingleRelatedObjectDescriptor so they actually return QuerySet
instances.

Also ensured that SingleRelatedObjectDescriptor.get_queryset() accounts
for use_for_related_fields=True.

This cleanup lays the groundwork for #23533.

Thanks Anssi Kääriäinen for the review.
This commit is contained in:
Loic Bistuer 2014-09-24 00:41:32 +07:00
parent 1fd6e13bf2
commit e043aae9bb
3 changed files with 90 additions and 15 deletions

View file

@ -96,3 +96,24 @@ class Pointer2(models.Model):
class HiddenPointer(models.Model):
target = models.OneToOneField(Target, related_name='hidden+')
# Test related objects visibility.
class SchoolManager(models.Manager):
def get_queryset(self):
return super(SchoolManager, self).get_queryset().filter(is_public=True)
class School(models.Model):
is_public = models.BooleanField(default=False)
objects = SchoolManager()
class DirectorManager(models.Manager):
def get_queryset(self):
return super(DirectorManager, self).get_queryset().filter(is_temp=False)
class Director(models.Model):
is_temp = models.BooleanField(default=False)
school = models.OneToOneField(School)
objects = DirectorManager()