更新:Django1.8では50文字の制限が255になりました
-
元の回答:
私も今日の午後に出会ったばかりで、(ある種の)修正があります
ここでのこの投稿は、auth_permissionに許可されている値の長さに関係するDjangoのバグであることを示唆しています。さらに掘り下げると、このDjangoチケットと同様に、そのアイデアが裏付けられます(最初はMySQL関連ですが)。
基本的に、パーミッション名はモデルのverbose_nameと説明的なパーミッション文字列に基づいて作成され、auth.models.Permission.nameで許可されている50文字を超える可能性があります。
Djangoチケットに関するコメントを引用するには:
auth_permission.name列の文字列値の最長のプレフィックスは、「変更可能」と「削除可能」で、どちらも11文字です。列の最大長は50であるため、Meta.verbose_nameの最大長は39です。
1つの解決策は、50文字を超える文字をサポートするようにその列をハックすることです(理想的には、南の移行を介して、簡単に再現できるようにします)が、私が考えることができる最も迅速で信頼性の高い修正は、単に非常に長いverbose_name定義を作成することでしたはるかに短い(verbose_nameの47文字から約20文字まで)。これですべて正常に動作します。