如何为Django ModelForm设置默认的widget属性? [英] How do I set default widget attributes for a Django ModelForm?

查看:637
本文介绍了如何为Django ModelForm设置默认的widget属性?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想将TextInput Widget的类属性设置为使用它的所有字段的值,而不必在Meta中列出它们全部:widgets = {....这是可能的吗? / p>

谢谢。

解决方案

 从django导入表单

class MyForm(forms.ModelForm):
def __init __(self,* args,** kwargs):
super(MyForm,self).__ init __ * args,** kwargs)
for name,field in self.fields.items():
if field.widget .__ class__ == forms.widgets.TextInput:
if field.widget .attrs.has_key('class'):
field.widget.attrs ['class'] + ='my-class'
else:
field.widget.attrs.update({ 'class':'my-class'})
class Meta:
model = MyModel


I'd like to set the class attribute for the TextInput Widget to one value for all the fields in my form that use it without having to list them all in Meta: widgets = {.... Is this possible?

Thanks.

解决方案

from django import forms

class MyForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(MyForm, self).__init__(*args, **kwargs)
        for name, field in self.fields.items():
            if field.widget.__class__ == forms.widgets.TextInput:
                if field.widget.attrs.has_key('class'):
                    field.widget.attrs['class'] += ' my-class'
                else:
                    field.widget.attrs.update({'class':'my-class'})
    class Meta:
        model = MyModel

这篇关于如何为Django ModelForm设置默认的widget属性?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆