Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
适用于所有字段的django应用小部件_Django_Django Forms_Django Widget_Django Widget Tweaks - Fatal编程技术网

适用于所有字段的django应用小部件

适用于所有字段的django应用小部件,django,django-forms,django-widget,django-widget-tweaks,Django,Django Forms,Django Widget,Django Widget Tweaks,有没有一种方法可以将css类应用于所有字段,而不是对每个字段执行以下操作。 forms.py class UserColorsForm(forms.ModelForm): class Meta: model = UserColors exclude = ('userid',) widgets = { 'text_color': forms.TextInput(attrs={'class': 'color'}),

有没有一种方法可以将css类应用于所有字段,而不是对每个字段执行以下操作。
forms.py

class UserColorsForm(forms.ModelForm):

    class Meta:
        model = UserColors
        exclude = ('userid',)
        widgets = {
            'text_color': forms.TextInput(attrs={'class': 'color'}),
            'background_color': forms.TextInput(attrs={'class': 'color'}),
            ... 10 more
        }

尝试迭代表单字段:

css1 = {'class': 'color', }
css2 = {'class': 'nocolor', }
class UserColorsForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(UserColorsForm, self).__init__(*args, **kwargs)
        for key, value in self.fields.iteritems():
            if key in ['field1', 'field2', ...]: # You can define a 
                # subset of fields in a list to selectively apply css classes, 
                # OR just iterate and apply to everything 
                # (take out the if-else statement)
                self.fields[key].widget.attrs.update(css1)
            else:
                self.fields[key].widget.attrs.update(css2)
这应该行得通

def __init__(self, *args, **kwargs):
    super(UserColorsForm, self).__init__(*args, **kwargs)
    for field in self.fields: 
        field.wiget.attrs['class'] = 'color'

要更新Mihai的答案,方法是:

def __init__(self, *args, **kwargs):
    super(YourForm, self).__init__(*args, **kwargs)
    for field in self.fields:
        self.fields[field].widget.attrs.update({'class': 'myfieldclass'})

谢谢你的回复。这一个有效:对于self中的field:field.field.widget.attrs['class']='color',这很奇怪,我很确定建议的解决方案是正确的。会出现什么错误?self.fields会迭代字段的字符串值。在未绑定的字段上进行自迭代。我用的是django 1.7。这个对我不起作用。我为self.fields.keys()中的键做了
:self.fields[key].attrs.update({'class':'my class'})
,它成功了