1
0
mirror of https://github.com/django/django.git synced 2025-10-24 14:16:09 +00:00

Fixed #26230 -- Made default_related_name affect related_query_name.

This commit is contained in:
chenesan
2016-02-24 15:10:09 +08:00
committed by Tim Graham
parent 5fb9756eba
commit b84f5ab4ec
8 changed files with 97 additions and 8 deletions

View File

@@ -1,4 +1,7 @@
import warnings
from django.test import TestCase
from django.utils.deprecation import RemovedInDjango20Warning
from .models.default_related_name import Author, Book, Editor
@@ -18,6 +21,19 @@ class DefaultRelatedNameTests(TestCase):
def test_default_related_name(self):
self.assertEqual(list(self.author.books.all()), [self.book])
def test_default_related_name_in_queryset_lookup(self):
self.assertEqual(Author.objects.get(books=self.book), self.author)
def test_show_deprecated_message_when_model_name_in_queryset_lookup(self):
msg = "Query lookup 'book' is deprecated in favor of Meta.default_related_name 'books'."
with warnings.catch_warnings(record=True) as warns:
warnings.simplefilter('once')
Author.objects.get(book=self.book)
self.assertEqual(len(warns), 1)
warning = warns.pop()
self.assertEqual(warning.category, RemovedInDjango20Warning)
self.assertEqual(str(warning.message), msg)
def test_related_name_overrides_default_related_name(self):
self.assertEqual(list(self.editor.edited_books.all()), [self.book])