2017-11-04 6 views
0

Django管理フォームのすべてのユーザのフィールドにboostrapクラスを割り当てる必要がありますが、このコードを書いても動作しません。すべての管理フォームフィールドにCSSクラスを追加

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'})}, 
} 

私を助けることができますか?

+0

[確認方法](https://docs.djangoproject.com/en/1.11/ref/forms/widgets/#styling-widget-instances)の実行方法については、こちらをご覧ください。 –

+0

はい、私はドキュメントを読んだが、管理ページにフォームをバインドできません – Mark116

+0

@ Mark116フォームを管理者ページにバインドするには、管理者を継承するクラスを作成するためにadmin.pyに登録する必要があります。 ModelAdmin。次に、フォームにform属性を指定します。 – Nuchimik

答えて

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) 

関連する問題