同じ問題がありました。これは Django 1.4 のバグなので、レポートを提出しました。バグを再現する簡単な方法とともに、私が提出したチケットを次に示します。
タイトル: formfield_overrides を使用して CharField サイズを設定すると、すべての管理フィールドでモデル定義の最後の max_length が使用される
説明: タイトルと ISBN が max_length 100 と 14 でどのように定義されているかを確認してください。オーバーライドにより、変更フォームで編集しているユーザーに関して、両方のフィールドの max_length が 14 になります。タイトル フィールドに 15 番目の文字を挿入することはできません。
models.py:
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=100,blank=True, null=True)
ISBN13 = models.CharField(max_length=14,unique=True)
def __unicode__(self):
return self.title
admin.py:
from django.contrib import admin
from django.db import models
from django.forms import TextInput
from books.models import Book
class BookAdmin(admin.ModelAdmin):
formfield_overrides = {
# Django enforces maximum field length of 14 onto 'title' field when user is editing in the change form
models.CharField: {'widget': TextInput(attrs={'size':'30'})},
}
admin.site.register(Book,BookAdmin)
編集: 私がバグを提出してから 48 時間以内に、素晴らしい Django コミュニティがバグを検証し、パッチを発行しました。このバグは、2013 年 3 月にリリースされた Django 1.5 で修正されていることをテストし、確認しました。
https://code.djangoproject.com/ticket/19423#ticket