2017-12-18 309 views
0

我想在Django ModelForm添加类我的输入是这样的:Django的部件 - 添加类到现场

from django import forms 
from .models import OrderProject 

class OrderProjectForm(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
     super(OrderProjectForm, self).__init__(*args, **kwargs) 
     for field in self.fields: 
      if field.widget.__class__ == forms.widgets.TextInput: 
       if 'class' in field.widget.attrs: 
        field.widget.attrs['class'] += 'project-form__input' 
       else: 
        field.widget.attrs.update({'class':'project-form__input'}) 

    class Meta: 
     model = OrderProject 
     fields = ('name', 'customer', 'area', 'status', 'budget', 'opening_date', 
        'ending_date',) 

不幸的是我得到了错误: 'str' object has no attribute 'widget'

任何想法,我做错了?

回答

0

form.fields是一个dict,其中字段的名称为键,表格字段为值。迭代它,从而产生字符串。更改如下:

for name, field in self.fields.items(): 
    # stuff with field.widget 

或者干脆(如果“东西”不涉及名称,它是在你的代码片段的情况下):

for field in self.fields.values(): 
    # stuff with field.widget 
+0

出了什么问题'dict.values()' ? –

+0

@brunodesthuilliers确实可能。我自己总是会和第一个一起走,只是为了在需要时能够访问这个名字。 – schwobaseggl