Django 自定义小部件-如何正确地为小部件提供参数

Django 自定义小部件-如何正确地为小部件提供参数,django,forms,widget,Django,Forms,Widget,如何正确地提供带有属性的自定义小部件?调用print attrs仅输出以下内容: attrs in LockFlagWidget are: {'id': u'id_lockedFlag'} 鉴于我希望: attrs in LockFlagWidget are: {'id': u'id_lockedFlag', 'size': u'80} 我编写了一个自定义小部件,如下所示: class LockFlagWidget(forms.widgets.Widget): def render

如何正确地提供带有属性的自定义小部件?调用
print attrs
仅输出以下内容:

attrs in LockFlagWidget are:
{'id': u'id_lockedFlag'}
鉴于我希望:

attrs in LockFlagWidget are:
{'id': u'id_lockedFlag', 'size': u'80}
我编写了一个自定义小部件,如下所示:

class LockFlagWidget(forms.widgets.Widget):

    def render(self, name, value, attrs=None):
        if value is None:
                value = ''
        print "attrs in LockFlagWidget are:"
        print attrs
        staticURL = getattr(settings, 'STATIC_URL')

        if value != '':
            if value == True:
                return mark_safe(u"<img src=\"" + staticURL +
                                 "lock/img/lock_closed.ico\"/>"
                                 + "<span> - Is locked</span>")
            else:
                return mark_safe(u"<img src=\"" + staticURL +
                                 "lock/img/lock_open.ico\"/>"
                                 + "<span> - Is not locked</span>")
class LockForm(forms.ModelForm):
    class Meta:
        model = MyModel

    def __init__(self, *args, **kwargs):
        super(LockForm, self).__init__(*args, **kwargs)
        self.fields['lockedFlag'].widget = LockFlagWidget(attrs={'size':'80'})
class MyModel(models.Model):
    lockedFlag = models.BooleanField(default=False)
MyModel
如下所示:

class LockFlagWidget(forms.widgets.Widget):

    def render(self, name, value, attrs=None):
        if value is None:
                value = ''
        print "attrs in LockFlagWidget are:"
        print attrs
        staticURL = getattr(settings, 'STATIC_URL')

        if value != '':
            if value == True:
                return mark_safe(u"<img src=\"" + staticURL +
                                 "lock/img/lock_closed.ico\"/>"
                                 + "<span> - Is locked</span>")
            else:
                return mark_safe(u"<img src=\"" + staticURL +
                                 "lock/img/lock_open.ico\"/>"
                                 + "<span> - Is not locked</span>")
class LockForm(forms.ModelForm):
    class Meta:
        model = MyModel

    def __init__(self, *args, **kwargs):
        super(LockForm, self).__init__(*args, **kwargs)
        self.fields['lockedFlag'].widget = LockFlagWidget(attrs={'size':'80'})
class MyModel(models.Model):
    lockedFlag = models.BooleanField(default=False)

在我看来,传递到呈现方法中的属性是字段中的属性,而不是小部件,请尝试将打印语句更改为
print self.attrs
,这将拾取传递到小部件构造函数中的属性。希望这有意义