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

如何修改Django ModelForm字段attrs以正确显示样式?

Django表单样式不生效的修复方案

你的代码里有两个关键错误导致样式无法生效:

  • 类的初始化方法拼写错误:__int__ 应为 __init__,拼写错误会导致该方法完全不会被执行
  • 遍历字段时调用了错误的方法:self.fields.item() 应为 self.fields.items(),字典的键值对遍历方法是items(),少了字母s会引发异常或无法遍历

修复后的完整代码如下:

from django.forms import ModelForm
from django import forms
from .models import Project

class ProjectForm(ModelForm):
    class Meta:
        model = Project
        fields = ['title', 'featured_image', 'description', 'demo_link', 'source_link', 'tags']
        widgets = {
            'tags': forms.CheckboxSelectMultiple(),
        }

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        # 为所有字段的控件添加input类
        for name, field in self.fields.items():
            field.widget.attrs.update({'class': 'input'})

修复后,表单初始化时会自动给所有字段的控件添加input样式类,样式就能正常生效。如果需要给特定字段单独设置样式,可以在遍历后单独修改对应字段,比如:

# 单独给title字段设置额外样式
self.fields['title'].widget.attrs.update({'class': 'input title-input'})

内容的提问来源于stack exchange,提问作者Xinyu Yang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 00:07:17