1
0
mirror of https://github.com/django/django.git synced 2025-06-05 11:39:13 +00:00

[1.7.x] Revert "Fixed #23455 -- Forced related_name to be a unicode string during deconstruction."

This reverts commit 45bd7b3bd9008941580c100b9fc7361e3ff3ff0d.

This is a backport of 8aaf51f94c70e3cfcd2c75a0be1b6f55049d82d8 from master.
This commit is contained in:
Carl Meyer 2014-12-11 12:36:13 -07:00
parent c64286c62b
commit f8b4cf4022
3 changed files with 7 additions and 15 deletions

View File

@ -14,7 +14,7 @@ from django.db.models.lookups import IsNull
from django.db.models.related import RelatedObject, PathInfo from django.db.models.related import RelatedObject, PathInfo
from django.db.models.query import QuerySet from django.db.models.query import QuerySet
from django.db.models.sql.datastructures import Col from django.db.models.sql.datastructures import Col
from django.utils.encoding import force_text, smart_text from django.utils.encoding import smart_text
from django.utils import six from django.utils import six
from django.utils.deprecation import RenameMethodsBase, RemovedInDjango18Warning from django.utils.deprecation import RenameMethodsBase, RemovedInDjango18Warning
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
@ -1376,7 +1376,7 @@ class ForeignObject(RelatedField):
kwargs['from_fields'] = self.from_fields kwargs['from_fields'] = self.from_fields
kwargs['to_fields'] = self.to_fields kwargs['to_fields'] = self.to_fields
if self.rel.related_name is not None: if self.rel.related_name is not None:
kwargs['related_name'] = force_text(self.rel.related_name) kwargs['related_name'] = self.rel.related_name
if self.rel.related_query_name is not None: if self.rel.related_query_name is not None:
kwargs['related_query_name'] = self.rel.related_query_name kwargs['related_query_name'] = self.rel.related_query_name
if self.rel.on_delete != CASCADE: if self.rel.on_delete != CASCADE:
@ -2112,7 +2112,7 @@ class ManyToManyField(RelatedField):
if self.rel.db_constraint is not True: if self.rel.db_constraint is not True:
kwargs['db_constraint'] = self.rel.db_constraint kwargs['db_constraint'] = self.rel.db_constraint
if self.rel.related_name is not None: if self.rel.related_name is not None:
kwargs['related_name'] = force_text(self.rel.related_name) kwargs['related_name'] = self.rel.related_name
if self.rel.related_query_name is not None: if self.rel.related_query_name is not None:
kwargs['related_query_name'] = self.rel.related_query_name kwargs['related_query_name'] = self.rel.related_query_name
# Rel needs more work. # Rel needs more work.

View File

@ -124,3 +124,7 @@ Bugfixes
* Fixed a crash in the admin when using "Save as new" and also deleting a * Fixed a crash in the admin when using "Save as new" and also deleting a
related inline (:ticket:`23857`). related inline (:ticket:`23857`).
* Removed auto-conversion of ``related_name`` to unicode in field
deconstruction, to maintain consistency of bytes/text in migrations matching
the original values (:ticket:`23455` and :ticket:`23982`).

View File

@ -211,12 +211,6 @@ class FieldDeconstructionTests(TestCase):
self.assertEqual(path, "django.db.models.ForeignKey") self.assertEqual(path, "django.db.models.ForeignKey")
self.assertEqual(args, []) self.assertEqual(args, [])
self.assertEqual(kwargs, {"to": "auth.Permission", "related_name": "foobar"}) self.assertEqual(kwargs, {"to": "auth.Permission", "related_name": "foobar"})
# Test related_name unicode conversion
field = models.ForeignKey("auth.Permission", related_name=b"foobar")
name, path, args, kwargs = field.deconstruct()
self.assertEqual(path, "django.db.models.ForeignKey")
self.assertEqual(args, [])
self.assertEqual(kwargs, {"to": "auth.Permission", "related_name": "foobar"})
@override_settings(AUTH_USER_MODEL="auth.Permission") @override_settings(AUTH_USER_MODEL="auth.Permission")
def test_foreign_key_swapped(self): def test_foreign_key_swapped(self):
@ -297,12 +291,6 @@ class FieldDeconstructionTests(TestCase):
self.assertEqual(path, "django.db.models.ManyToManyField") self.assertEqual(path, "django.db.models.ManyToManyField")
self.assertEqual(args, []) self.assertEqual(args, [])
self.assertEqual(kwargs, {"to": "auth.Permission", "related_name": "custom_table"}) self.assertEqual(kwargs, {"to": "auth.Permission", "related_name": "custom_table"})
# Test related_name unicode conversion
field = models.ManyToManyField("auth.Permission", related_name=b"custom_table")
name, path, args, kwargs = field.deconstruct()
self.assertEqual(path, "django.db.models.ManyToManyField")
self.assertEqual(args, [])
self.assertEqual(kwargs, {"to": "auth.Permission", "related_name": "custom_table"})
@override_settings(AUTH_USER_MODEL="auth.Permission") @override_settings(AUTH_USER_MODEL="auth.Permission")
def test_many_to_many_field_swapped(self): def test_many_to_many_field_swapped(self):