You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 20:48:45