Fixed #20207 -- Handle ManyToManyField with a unicode name correctly.
This commit is contained in:
parent
a49e7dd2a3
commit
216580e034
|
@ -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},
|
'verbose_name_plural': '%(from)s-%(to)s relationships' % {'from': from_, 'to': to},
|
||||||
})
|
})
|
||||||
# Construct and return the new class.
|
# Construct and return the new class.
|
||||||
return type(name, (models.Model,), {
|
return type(str(name), (models.Model,), {
|
||||||
'Meta': meta,
|
'Meta': meta,
|
||||||
'__module__': klass.__module__,
|
'__module__': klass.__module__,
|
||||||
from_: models.ForeignKey(klass, related_name='%s+' % name, db_tablespace=field.db_tablespace, db_constraint=field.rel.db_constraint),
|
from_: models.ForeignKey(klass, related_name='%s+' % name, db_tablespace=field.db_tablespace, db_constraint=field.rel.db_constraint),
|
||||||
|
|
|
@ -6,6 +6,7 @@ To define a many-to-many relationship, use ``ManyToManyField()``.
|
||||||
In this example, an ``Article`` can be published in multiple ``Publication``
|
In this example, an ``Article`` can be published in multiple ``Publication``
|
||||||
objects, and a ``Publication`` has multiple ``Article`` objects.
|
objects, and a ``Publication`` has multiple ``Article`` objects.
|
||||||
"""
|
"""
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils.encoding import python_2_unicode_compatible
|
from django.utils.encoding import python_2_unicode_compatible
|
||||||
|
@ -24,7 +25,9 @@ class Publication(models.Model):
|
||||||
@python_2_unicode_compatible
|
@python_2_unicode_compatible
|
||||||
class Article(models.Model):
|
class Article(models.Model):
|
||||||
headline = models.CharField(max_length=100)
|
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):
|
def __str__(self):
|
||||||
return self.headline
|
return self.headline
|
||||||
|
|
Loading…
Reference in New Issue