为通用表单字段指定CSS类
我有一些基本的增删改查界面,其中一个看起来是这样的:
#model
class Model(models.Model):
field1 = models.CharField()
field2 = models.CharField()
#view
class Model1CreateView(CreateView):
model = Model1
fields = ['field1', 'field2']
#template
and model1_form.html
<form action="{% url 'model1_new' %}" method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Submit" />
</form>
我需要为field1指定一个CSS类,我该怎么做呢?
2 个回答
1
如果你想要这样做,就必须明确地定义一个表单。
class Model1Form(forms.ModelForm):
field1 = forms.CharField(widget=forms.TextInput(attrs={'class': 'myclass'}))
class Meta:
model = Model1
fields = ['field1', 'field2']
class Model1CreateView(CreateView):
form_class = Model1Form
model = Model1
2
你需要创建一个 Form
表单,并修改这个表单中字段的 attrs
属性。通常有两种常见的方法来做到这一点。不管用哪种方法,你都需要创建一个自定义的 Form
,并告诉你的 View
使用这个表单:
forms.py
from django import forms
from myapp.models import FooModel
class FooForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(FooForm, self).__init__(*args, **kwargs)
self.fields['field1'].widget.attrs = { 'class': 'fooclass' }
class Meta:
model = FooModel
fields = ['field1', 'field2']
或者
from django import forms
from myapp.models import FooModel
class FooForm(forms.ModelForm):
field1 = forms.CharField(widget=forms.Textarea(attrs={'class':'fooclass';}))
class Meta:
model = FooModel
fields = ['field1', 'field2']
然后在你的 views.py 文件中:
from myapp.forms import FooForm
class Model1CreateView(CreateView):
model = Model1
fields = ['field1', 'field2']
form_class = FooForm