diff options
| author | Loïc Bistuer <loic.bistuer@gmail.com> | 2016-04-17 18:55:55 +0700 |
|---|---|---|
| committer | Loïc Bistuer <loic.bistuer@gmail.com> | 2016-05-17 12:07:22 +0700 |
| commit | ed0ff913c648b16c4471fc9a9441d1ee48cb5420 (patch) | |
| tree | bf9cd3fad9f4c9abbec1967817842fdacad0938a /tests/many_to_one | |
| parent | 3a47d42fa33012b2156bf04058d933df6b3082d2 (diff) | |
Fixed #10506, #13793, #14891, #25201 -- Introduced new APIs to specify models' default and base managers.
This deprecates use_for_related_fields.
Old API:
class CustomManager(models.Model):
use_for_related_fields = True
class Model(models.Model):
custom_manager = CustomManager()
New API:
class Model(models.Model):
custom_manager = CustomManager()
class Meta:
base_manager_name = 'custom_manager'
Refs #20932, #25897.
Thanks Carl Meyer for the guidance throughout this work.
Thanks Tim Graham for writing the docs.
Diffstat (limited to 'tests/many_to_one')
| -rw-r--r-- | tests/many_to_one/tests.py | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/tests/many_to_one/tests.py b/tests/many_to_one/tests.py index eaa01bbfcb..20f2e0d56d 100644 --- a/tests/many_to_one/tests.py +++ b/tests/many_to_one/tests.py @@ -4,7 +4,7 @@ from copy import deepcopy from django.core.exceptions import FieldError, MultipleObjectsReturned from django.db import models, transaction from django.db.utils import IntegrityError -from django.test import TestCase +from django.test import TestCase, ignore_warnings from django.utils import six from django.utils.deprecation import RemovedInDjango20Warning from django.utils.translation import ugettext_lazy @@ -580,6 +580,7 @@ class ManyToOneTests(TestCase): with self.assertNumQueries(1): self.assertEqual(th.child_set.count(), 0) + @ignore_warnings(category=RemovedInDjango20Warning) # for use_for_related_fields deprecation def test_related_object(self): public_school = School.objects.create(is_public=True) public_student = Student.objects.create(school=public_school) @@ -608,6 +609,16 @@ class ManyToOneTests(TestCase): finally: School._default_manager.use_for_related_fields = False + School._meta.base_manager_name = 'objects' + School._meta._expire_cache() + try: + private_student = Student.objects.get(pk=private_student.pk) + with self.assertRaises(School.DoesNotExist): + private_student.school + finally: + School._meta.base_manager_name = None + School._meta._expire_cache() + def test_hasattr_related_object(self): # The exception raised on attribute access when a related object # doesn't exist should be an instance of a subclass of `AttributeError` |
