首页 > 解决方案 > 如何在 Django 中自动为我的所有表单小部件添加类属性?

问题描述

我希望每次使用 django 创建表单时,标签输入都包含一个特定的 css 类(表单控件),为此我必须在 form.py 中编写以下代码,为每个字段添加行:

class InsertItem(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['name'].widget.attrs.update({'class': 'form-control'})
        self.fields['price'].widget.attrs.update({'class': 'form-control'})

有没有办法强制 Django 在每种形式中包含我需要的 css 类,而不必为每一行和每一行编写这些东西?

标签: pythoncssdjangoforms

解决方案


编写一个更新每个字段的通用基类:

class StylishForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        for field in self.fields.values():
            field.widget.attrs.update({'class': 'form-control'})

并从中继承:

class InsertItem(StylishForm):
   ...

推荐阅读