diff options
| author | Simon Charette <charette.s@gmail.com> | 2013-04-05 13:59:15 -0400 |
|---|---|---|
| committer | Simon Charette <charette.s@gmail.com> | 2013-04-05 15:21:59 -0400 |
| commit | d04e8f8c7869b79a6f848a94bd51ce71223c2df2 (patch) | |
| tree | ccaac61061c0a5e400e01836fafb1aa8e3144431 | |
| parent | a15a3e9148e9707f8ab3477be512546e7cf73607 (diff) | |
[1.5.x] Fixed #20207 -- Handle ManyToManyField with a unicode name correctly.
Backport of 216580e034.
| -rw-r--r-- | django/db/models/fields/related.py | 2 | ||||
| -rw-r--r-- | tests/modeltests/many_to_many/models.py | 5 |
2 files changed, 5 insertions, 2 deletions
diff --git a/django/db/models/fields/related.py b/django/db/models/fields/related.py index 95c865df22..2ac4b470b7 100644 --- a/django/db/models/fields/related.py +++ b/django/db/models/fields/related.py @@ -1172,7 +1172,7 @@ def create_many_to_many_intermediary_model(field, klass): 'verbose_name_plural': '%(from)s-%(to)s relationships' % {'from': from_, 'to': to}, }) # Construct and return the new class. - return type(name, (models.Model,), { + return type(str(name), (models.Model,), { 'Meta': meta, '__module__': klass.__module__, from_: models.ForeignKey(klass, related_name='%s+' % name, db_tablespace=field.db_tablespace), diff --git a/tests/modeltests/many_to_many/models.py b/tests/modeltests/many_to_many/models.py index a196c85092..31793b3974 100644 --- a/tests/modeltests/many_to_many/models.py +++ b/tests/modeltests/many_to_many/models.py @@ -6,6 +6,7 @@ To define a many-to-many relationship, use ``ManyToManyField()``. In this example, an ``Article`` can be published in multiple ``Publication`` objects, and a ``Publication`` has multiple ``Article`` objects. """ +from __future__ import unicode_literals from django.db import models from django.utils.encoding import python_2_unicode_compatible @@ -24,7 +25,9 @@ class Publication(models.Model): @python_2_unicode_compatible class Article(models.Model): headline = models.CharField(max_length=100) - publications = models.ManyToManyField(Publication) + # Assign a unicode string as name to make sure the intermediary model is + # correctly created. Refs #20207 + publications = models.ManyToManyField(Publication, name='publications') def __str__(self): return self.headline |
