【问题标题】:How to add help_text to display as input value?如何添加 help_text 以显示为输入值?
【发布时间】:2014-06-14 18:07:12
【问题描述】:

我想获取在我的表单类中声明的 help_text 以在 inside 呈现 HTML 表单元素,而不是 Django 的默认值,它将它显示为一个单独的元素。具体来说,对于 textarea 字段,help_text 需要在 HTML 开始标签和结束标签之间移动,对于输入字段,help_text 需要设置为value= 属性——基本上,转:

text = forms.CharField(widget=forms.Textarea(attrs={'class':'form-control', 'rows':2}), help_text="Some help text")
image = forms.CharField(widget=forms.TextInput(attrs={'class':'form-control'}), help_text="More help text")

进入:

<textarea class="form-control" id="id_text" name="text" rows="2">Some help text</textarea>
<input class="form-control" id="id_image" name="image" value="More help text">

照原样,第一块代码不会在任何地方插入 help_text。

一种方法是仅使用模板标签将所有内容插入内联,但这感觉像是一种 hack。

<textarea class="form-control" id="{{ form.text.auto_id }}" name="{{ form.text.html_name }}" rows="2">{{ form.text.help_text }}</textarea>
<input class="form-control" id="{{ form.image.auto_id }}" name="{{ form.image.html_name }}" value="{{ form.image.help_text }}">

我想一定有更好的方法吗?

【问题讨论】:

  • 有什么原因不能使用placeholder 属性而不是value
  • 是的,我绝对可以(而且应该)。有没有办法让它与 help_text 一起工作?

标签: python django


【解决方案1】:

不要使用help_text,而是使用placeholder 属性。

text = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'Some help text'}))

【讨论】:

  • 这绝对满足我的目的。我想我只是想知道是否可以使用 help_text ,因为它似乎是一个原生功能,但在不需要的时候将事情复杂化是没有意义的。谢谢!
【解决方案2】:

这个答案可能为时已晚......但对于其他可能需要的人来说。

例如,如果您有一个模型字段名称 job_summary,那么您可以在 forms.py 中执行此操作:

class JobForm(forms.Form):
    model = Job
...
    class Meta:
        widgets = {'job_summary', forms.Textarea(attrs={'placeholder': Job._meta.get_field('job_summary').help_text}), }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 2021-01-24
    • 1970-01-01
    • 1970-01-01
    • 2019-11-28
    相关资源
    最近更新 更多