2017-12-18 308 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