Fixed #9199 -- We were erroneously only prepending "www" to the domain if we
[django.git] / tests / regressiontests / reverse_single_related / models.py
blobb2b75392aa4e89bbebaa7d71caa201f8652750ca
1 """
2 Regression tests for an object that cannot access a single related object due
3 to a restrictive default manager.
4 """
6 from django.db import models
9 class SourceManager(models.Manager):
10 def get_query_set(self):
11 return super(SourceManager, self).get_query_set().filter(is_public=True)
13 class Source(models.Model):
14 is_public = models.BooleanField()
15 objects = SourceManager()
17 class Item(models.Model):
18 source = models.ForeignKey(Source)
21 __test__ = {'API_TESTS':"""
23 >>> public_source = Source.objects.create(is_public=True)
24 >>> public_item = Item.objects.create(source=public_source)
26 >>> private_source = Source.objects.create(is_public=False)
27 >>> private_item = Item.objects.create(source=private_source)
29 # Only one source is available via all() due to the custom default manager.
31 >>> Source.objects.all()
32 [<Source: Source object>]
34 >>> public_item.source
35 <Source: Source object>
37 # Make sure that an item can still access its related source even if the default
38 # manager doesn't normally allow it.
40 >>> private_item.source
41 <Source: Source object>
43 # If the manager is marked "use_for_related_fields", it'll get used instead
44 # of the "bare" queryset. Usually you'd define this as a property on the class,
45 # but this approximates that in a way that's easier in tests.
47 >>> Source.objects.use_for_related_fields = True
48 >>> private_item = Item.objects.get(pk=private_item.pk)
49 >>> private_item.source
50 Traceback (most recent call last):
51 ...
52 DoesNotExist: Source matching query does not exist.
54 """}