3

所以我有一个模型,其中一个字段如下所示:

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块给了我想要的 40 个字符输入,它缩短了字符域。

难道我做错了什么?

谢谢

4

1 回答 1

4

我遇到过同样的问题。这是一个 Django 1.4 的错误,所以我刚刚提交了一份报告。这是我提交的票,用一种简单的方法来重新创建错误:

标题:使用 formfield_overrides 设置 CharField 大小会导致所有管理字段使用模型定义中的最后一个 max_length

描述:查看如何使用 max_length 100 和 14 定义标题和 ISBN。对于在更改表单中编辑的用户,覆盖导致两个字段的 max_length 为 14 - 第 15 个字符不能插入到标题字段中。

模型.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

管理员.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 回答