3

したがって、フィールドの1つが次のようになるモデルがあります。

dirlab_cruce = models.CharField(verbose_name='Cruce', max_length=40, null=True, blank=True)

すべてのテキストフィールドを同じ長さにできるようにするために、admin.py でこれを行いました。

formfield_overrides = {
    models.CharField: {'widget': TextInput(attrs={'size':'100%'})}
}

これにより、すべてのテキストフィールドがフォームと同じ幅になりましたが、入力できるテキストは 4 文字に制限されています。

ブロックにコメントformfield_overridesを付けると、charfield が短くなり、希望どおりに 40 文字の入力が得られます。

私は何か間違ったことをしていますか?

ありがとう

4

1 に答える 1

4

同じ問題がありました。これは 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

于 2012-12-04T18:13:17.530 に答える