[1.5.x] Fixed #20207 -- Handle ManyToManyField with a unicode name correctly.
Backport of 216580e034
.
This commit is contained in:
parent
a15a3e9148
commit
d04e8f8c78
|
@ -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),
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue