如何在Django Admin表单中将TextField渲染为单行文本区域
解决Django Admin中TextField字段显示尺寸问题
问题根源
你之前的代码将widgets字典定义在了ProductForm类的根层级,而非Meta类内部,这会导致Django无法识别该配置,所以你的尺寸设置没有生效。
方案1:正确配置Textarea(缩小多行文本框)
将widgets移至Meta类中,即可让配置生效:
from django import forms from django.contrib import admin from .models import Product class ProductForm(forms.ModelForm): class Meta: model = Product exclude = ("id",) widgets = { "attributes": forms.Textarea(attrs={"cols": 30, "rows": 1}) } @admin.register(Product) class ProductAdmin(admin.ModelAdmin): list_per_page = 10 form = ProductForm
方案2:改用TextInput实现纯单行输入
如果需要完全的单行输入体验,直接替换为TextInput更合适(Textarea即使设置rows=1仍允许换行):
from django import forms from django.contrib import admin from .models import Product class ProductForm(forms.ModelForm): class Meta: model = Product exclude = ("id",) widgets = { "attributes": forms.TextInput(attrs={"size": 30}) } @admin.register(Product) class ProductAdmin(admin.ModelAdmin): list_per_page = 10 form = ProductForm
替代方案:无需自定义表单的快速配置
如果不想单独定义表单,也可以直接在ProductAdmin中通过formfield_overrides配置:
from django.contrib import admin from django import forms from .models import Product @admin.register(Product) class ProductAdmin(admin.ModelAdmin): list_per_page = 10 formfield_overrides = { models.TextField: {'widget': forms.TextInput(attrs={"size": 30})} }
内容的提问来源于stack exchange,提问作者anon_dcs3spp
相关产品推荐
相关产品推荐

