Opened 6 years ago

Closed 6 years ago

Last modified 6 years ago

#20207 closed Bug (fixed)

`ManyToManyField` with an unicode name fails to create an intermediary model.

Reported by: Simon Charette Owned by: Simon Charette
Component: Database layer (models, ORM) Version: master
Severity: Normal Keywords:
Cc: Triage Stage: Ready for checkin
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no


I encountered the following error when porting an app codebase to support both python 2 and 3.

from __future__ import unicode_literals

class Teacher(models.Model):
    students_ = models.ManyToManyField(Student, name='students')  # Here the name is a unicode string because of the future import.


TypeError: Error when calling the metaclass bases
    type() argument 1 must be string, not unicode

The culprit is this line. It should always be a str.

This was not introduced by the codebase port to Python 3 and thus it's not a release blocker.

Attaching a simple patch with tests in a few moments.

Attachments (1)

0001-Fixed-20207-Handle-ManyToManyField-with-a-unicode-na.patch (2.1 KB) - added by Simon Charette 6 years ago.

Download all attachments as: .zip

Change History (6)

comment:1 Changed 6 years ago by Simon Charette

Has patch: set

comment:2 Changed 6 years ago by Claude Paroz

Triage Stage: UnreviewedReady for checkin

comment:3 Changed 6 years ago by Aymeric Augustin

It'd be nice to backport the fix to 1.5.

comment:4 Changed 6 years ago by Simon Charette <charette.s@…>

Resolution: fixed
Status: newclosed

In 216580e03499e035b93283df00fcc03b346fef7b:

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

comment:5 Changed 6 years ago by Simon Charette <charette.s@…>

In d04e8f8c7869b79a6f848a94bd51ce71223c2df2:

[1.5.x] Fixed #20207 -- Handle ManyToManyField with a unicode name correctly.

Backport of 216580e034.

Note: See TracTickets for help on using tickets.
Back to Top