2011-01-22 18 views
5

我想在表單中將模型字段help_text顯示爲HTML title屬性,而不是將其作爲默認值附加到行尾。是否有可能將模型幫助文本顯示爲Django窗體上的標題屬性?

我喜歡關於模型字段的所有信息(在模型定義本身中),因此不想爲每個小部件指定自定義title。但是,如果有方法指定每個小部件的title屬性應等於help_text的值,那麼可以。那可能嗎?我在找東西的效果:

widgets = {'url':TextInput(attrs={'title': help_text})} 

我能想到這樣做的唯一的其他方式,是使定製小部件的每一個內置的Widget類型。是否有更容易,更懶惰的方式來達到相同的效果?

使用Javascript也是一種選擇,但那只是一個非常遙遠的最後手段。我在想這應該是一個相當普遍的用例;你們過去如何處理它?

回答

3
Model._meta.get_field('field').help_text 

在你的情況

widgets = {'url':TextInput(attrs={'title': Model._meta.get_field('url').help_text})} 
+0

整齊的適應,我不知道。如何隱藏`help_text`,以便它只顯示在標題中? – 2011-01-22 21:27:27

+0

你想隱藏一個表單嗎?只需製作你自己的自定義表格http://docs.djangoproject.com/zh/dev/topics/forms/#customizing-the-form-template – errx 2011-01-22 21:33:44

2

下面是使用一類裝飾的另一種方式。

def putHelpTextInTitle (cls): 
    init = cls.__init__ 

    def __init__ (self, *args, **kwargs): 
     init(self, *args, **kwargs) 
     for field in self.fields.values(): 
      field.widget.attrs['title'] = field.help_text 

    cls.__init__ = __init__ 
    return cls 

@putHelpTextInTitle 
class MyForm (models.Form): 
    #fields here 

類裝飾從here

相關問題