Django 在管理员上添加或编辑条目时往往会填满水平空间,但在某些情况下,这确实是空间浪费,例如编辑日期字段,8 个字符宽,或 CharField,也是 6 或 8字符宽度,然后编辑框增加到 15 或 20 个字符。
我如何告诉管理员文本框的宽度或 TextField 编辑框的高度?
原文由 Andor 发布,翻译遵循 CC BY-SA 4.0 许可协议
Django 在管理员上添加或编辑条目时往往会填满水平空间,但在某些情况下,这确实是空间浪费,例如编辑日期字段,8 个字符宽,或 CharField,也是 6 或 8字符宽度,然后编辑框增加到 15 或 20 个字符。
我如何告诉管理员文本框的宽度或 TextField 编辑框的高度?
原文由 Andor 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以使用其 “attrs” 属性在小部件上设置任意 HTML 属性。
您可以使用 formfield_for_dbfield 在 Django 管理员中执行此操作:
class MyModelAdmin(admin.ModelAdmin):
def formfield_for_dbfield(self, db_field, **kwargs):
field = super(ContentAdmin, self).formfield_for_dbfield(db_field, **kwargs)
if db_field.name == 'somefield':
field.widget.attrs['class'] = 'someclass ' + field.widget.attrs.get('class', '')
return field
或者使用自定义 Widget 子类和 formfield_overrides 字典:
class DifferentlySizedTextarea(forms.Textarea):
def __init__(self, *args, **kwargs):
attrs = kwargs.setdefault('attrs', {})
attrs.setdefault('cols', 80)
attrs.setdefault('rows', 5)
super(DifferentlySizedTextarea, self).__init__(*args, **kwargs)
class MyModelAdmin(admin.ModelAdmin):
formfield_overrides = { models.TextField: {'widget': DifferentlySizedTextarea}}
原文由 Carl Meyer 发布,翻译遵循 CC BY-SA 2.5 许可协议
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
1 回答3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.5k 阅读✓ 已解决
1 回答3.8k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
您应该使用 ModelAdmin.formfield_overrides 。
这很容易——在
admin.py
中,定义: