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:09:53 -0400 |
| commit | 216580e03499e035b93283df00fcc03b346fef7b (patch) | |
| tree | 4206c15096f5a98e79a2b34bd2c6aff6ae0a79d4 | |
| parent | a49e7dd2a34882fc68244e024eb2876b21c7e8a8 (diff) | |
Fixed #20207 -- Handle ManyToManyField with a unicode name correctly.
| -rw-r--r-- | django/db/models/fields/related.py | 2 | ||||
| -rw-r--r-- | tests/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 677a4707a0..e85b3301bf 100644 --- a/django/db/models/fields/related.py +++ b/django/db/models/fields/related.py @@ -1327,7 +1327,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, db_constraint=field.rel.db_constraint), diff --git a/tests/many_to_many/models.py b/tests/many_to_many/models.py index a196c85092..31793b3974 100644 --- a/tests/many_to_many/models.py +++ b/tests/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 |
