将css类添加到所有管理表单字段

时间:2017-11-04 17:57:43

标签: django

我需要在Django管理表单中为我的所有用户字段分配一个boostrap类,我编写了这段代码,但它不起作用。

  formfield_overrides = {
    models.CharField:     {'widget': TextInput(attrs={'class': 'form-control'})},
    models.CharField:     {'widget': EmailInput(attrs={'class': 'form-control'})},
    models.DateField:     {'widget': DateTimeInput(attrs={'type': 'date', 'class': 'form-control'})},
    models.EmailField:    {'widget': EmailInput(attrs={'class': 'form-control'})},
    models.BooleanField:  {'widget': CheckboxInput(attrs={'class': 'form-control'})},
 }

你能帮助我吗?

2 个答案:

答案 0 :(得分:1)

您的表格

#yourapp/forms.py
class YourForm(forms.ModelForm):
    class Meta: 
        model = YourModel
        fields = (field1,field2,field3,)

    def __init__(self, *args, **kwargs): 
        super().__init__(*args, **kwargs)
        for field in self._meta.fields:
            attrs = {'class':'form-control'}
            if self.fields[field].widget.__class__.__name__ == "DateTimeInput":
                attrs.update({'type':'date'})
            self.fields[field].widget.attrs.update(attrs)

接下来,admin.py

#yourapp/admin.py
from django.contrib import admin
from .forms import YourForm
from .models import YourModel

class AdminModel(admin.ModelAdmin):
    form = YourForm

admin.site.register(YourModel,AdminModel)

您可以从documentation了解更多信息。

答案 1 :(得分:0)

如果您想覆盖管理员中使用的某些字段选项,请查看详细信息:https://docs.djangoproject.com/en/1.11/ref/contrib/admin/#django.contrib.admin.ModelAdmin.formfield_overrides。 formfield_overrides最常见的用途是为特定类型的字段添加自定义窗口小部件。