为通用表单字段指定CSS类

1 投票
2 回答
888 浏览
提问于 2025-05-01 07:12

我有一些基本的增删改查界面,其中一个看起来是这样的:

#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

撰写回答