Commit 216580e0 authored by Simon Charette's avatar Simon Charette
Browse files

Fixed #20207 -- Handle ManyToManyField with a unicode name correctly.

parent a49e7dd2
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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),
+4 −1
Original line number Diff line number Diff line
@@ -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