2012-09-12 85 views
0

如何正確提供自定義小工具與attrs?呼叫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'}) 

MyModel看起來是這樣的:

class MyModel(models.Model): 
    lockedFlag = models.BooleanField(default=False) 

回答

1

它看起來對我像被傳遞到您的渲染方法的屬性是從外地沒有插件的屬性,嘗試將print語句改爲print self.attrs,這將拿起你傳遞給你的構件的屬性。希望這是有道理的?

+0

OMG :)謝謝,你是對的.. –