首页 文章

是否可以在Django中的表单上显示模型帮助文本作为 Headers 属性?

提问于
浏览
5

我想将模型字段 help_text 显示为表单中的HTML title 属性,而不是将其作为默认值附加到行的末尾 .

我喜欢模型字段在一个地方(在模型定义本身中)的所有信息,因此不想为每个小部件指定自定义 title . 但是,如果有一种方法可以指定每个小部件的title属性应该等于 help_text 的值,那也没关系 . 那可能吗?我正在寻找一些效果:

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

我能想到的另一种方法是为内置的Widget类型中的每一个创建自定义小部件 . 是否有更简单,更懒惰的方式来达到同样的效果?

使用Javascript也是一种选择,但这实际上只是一个非常遥远的最后手段 . 我认为这必须是一个相当普遍的用例;你们过去怎么处理它?

2 回答

  • 2
    Model._meta.get_field('field').help_text
    

    在你的情况下

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

    这是使用类装饰器的另一种方式 .

    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

相关问题