ModelForm更改样式
时间: 2023-07-20 17:27:53 浏览: 49
如果您想要更改Django的ModelForm的样式,有几种方法可以实现:
1. 使用widgets属性
可以使用widgets属性指定每个表单字段使用的小部件,并可以指定它们的属性和样式。例如:
```python
class MyForm(forms.ModelForm):
class Meta:
model = MyModel
fields = '__all__'
widgets = {
'field1': forms.TextInput(attrs={'class': 'my-class'}),
'field2': forms.Textarea(attrs={'class': 'my-class', 'rows': 3}),
}
```
2. 使用form-control类
可以为每个表单字段添加`form-control`类,以便使用Bootstrap样式。例如:
```python
class MyForm(forms.ModelForm):
class Meta:
model = MyModel
fields = '__all__'
widgets = {
'field1': forms.TextInput(attrs={'class': 'form-control'}),
'field2': forms.Textarea(attrs={'class': 'form-control', 'rows': 3}),
}
```
3. 使用自定义CSS
您还可以使用自定义CSS为表单字段添加样式。例如:
```python
class MyForm(forms.ModelForm):
class Meta:
model = MyModel
fields = '__all__'
widgets = {
'field1': forms.TextInput(attrs={'class': 'my-class'}),
'field2': forms.Textarea(attrs={'class': 'my-class', 'rows': 3}),
}
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['field1'].widget.attrs.update({'class': 'my-class form-control'})
self.fields['field2'].widget.attrs.update({'class': 'my-class form-control'})
```
在这个例子中,我们将自定义CSS类`my-class`和Bootstrap的`form-control`类组合在一起。