当在管理员上添加或编辑条目时,Django往往会填满水平空间,但在某些情况下,真正浪费空间,即编辑日期字段,8个字符宽,或CharField,也是6或8 chars wide,然后编辑框上升到15或20个字符.
如何告诉管理员文本框应该有多宽,或者TextField编辑框的高度?
我的模型中有一个DateTimeField字段.我想将它显示为Django管理站点中的复选框小部件.为此,我创建了一个自定义表单小部件.但是,我不知道如何仅将此自定义窗口小部件用于此字段.
在Django文档解释了如何使用自定义窗口小部件的所有特定类型的字段:
class StopAdmin(admin.ModelAdmin):
formfield_overrides = {
models.DateTimeField: {'widget': ApproveStopWidget }
}
Run Code Online (Sandbox Code Playgroud)
但这并不够精细.我想只为一个字段更改它.
我设法TextArea用两种不同的方式覆盖django管理界面中Widget 的外观:
在admin.py:
class RulesAdmin(admin.ModelAdmin):
formfield_overrides = {
models.TextField: {'widget': Textarea(
attrs={'rows': 1,
'cols': 40})},
}
...
admin.site.register(Rules, RulesAdmin)
Run Code Online (Sandbox Code Playgroud)
这种方式有点过分,因为它会改变该模型的所有TextField.
在forms.py:
from django.forms import ModelForm, Textarea
from TimePortal.models import Rules
class RulesModelForm(ModelForm):
class Meta:
model = Rules
widgets = {
'parameters': Textarea(attrs={'cols': 30, 'rows': 1}),
}
Run Code Online (Sandbox Code Playgroud)
在 admin.py
from AppName.forms import RulesModelForm
class RulesAdmin(admin.ModelAdmin):
form = RulesModelForm
Run Code Online (Sandbox Code Playgroud)
这两种解决方案调整TextArea.但是,在两种解决方案中,文本区域的实际大小超过1行(实际上是2行).以下是呈现的HTML的外观:
<div class="form-row field-parameters">
<div>
<label for="id_parameters" class="required">Parameters:</label>
<textarea id="id_parameters" rows="1" cols="30" name="parameters">{}</textarea> …Run Code Online (Sandbox Code Playgroud)