Update:Die 50-Zeichen-Grenze beträgt jetzt 255 in Django 1.8
--
Ursprüngliche Antwort:
Ich bin heute Nachmittag auch darauf gestoßen, und ich habe (eine Art) eine Lösung gefunden
Dieser Beitrag hier impliziert, dass es sich um einen Django-Fehler handelt, der mit der Länge des für auth_permission zulässigen Werts zu tun hat. Weiteres Graben unterstützt diese Idee, ebenso wie dieses Django-Ticket (obwohl es ursprünglich MySQL-bezogen ist).
Im Grunde genommen wird ein Berechtigungsname basierend auf dem verbose_name eines Modells plus einer beschreibenden Berechtigungszeichenfolge erstellt und kann mehr als die in auth.models.Permission.name erlaubten 50 Zeichen umfassen.
So zitieren Sie einen Kommentar zum Django-Ticket:
Die längsten Präfixe für den String-Wert in der Spalte auth_permission.name sind „Can change“ und „Can delete“, beide mit 11 Zeichen. Die maximale Spaltenlänge beträgt 50, daher beträgt die maximale Länge von Meta.verbose_name 39.
Eine Lösung wäre, diese Spalte zu hacken, um> 50 Zeichen zu unterstützen (idealerweise über eine Süd-Migration, sage ich, damit es leicht wiederholbar ist), aber die schnellste und zuverlässigste Lösung, die ich mir vorstellen konnte, war, einfach meine extra lange verbose_name-Definition zu erstellen viel kürzer (von 47 Zeichen im verbose_name auf etwa 20). Alles funktioniert jetzt einwandfrei.