【问题标题】:Can i add help text in django model fields我可以在 django 模型字段中添加帮助文本吗
【发布时间】:2013-08-13 06:03:09
【问题描述】:

我有一个学生详细信息页面,其中所有学生数据都以日志嵌套格式显示。

现在我知道我可以在表单中添加帮助文本。但是现在我的经理希望当我们显示详细信息页面时,应该有关于将鼠标悬停在每个字段上的帮助。

现在我很困惑,我应该在哪里为 5-6 个表格中的每个表格输入 50-100 字的帮助文本

这就是我在表单中使用 help_text 的方式:

student_number = forms.CharField(
        required=False, max_length=64, label='Student Number',
        help_text='Unique identifier for the student ')

【问题讨论】:

    标签: python django django-models


    【解决方案1】:

    “详细信息页面”是指单个学生实例的编辑表单还是所有学生记录的列表? 您是使用 Django admin 还是使用自己的视图和模板、自定义表单定义或 as_ul()/as_list() 等? 仅查看表单字段定义很难回答您的问题。

    你所说的“每张桌子”是什么意思? 会form inheritance帮忙,让你只在超级表单中设置常用表单域的帮助文本。

    如果你渲染一个自定义模板,你可以在任何你喜欢的地方渲染 help_text {{ my_field.help_text }}。如果您的模板中有一个类似表格的视图并希望在其中显示帮助文本,只需在模板上下文中放置一个空的表单实例,以便您可以访问 help_texts 并将其作为工具提示放入表格中?

    【讨论】:

    • 通过详细信息页面,我的意思是我有我的自定义视图,我在其中显示学生的现成信息及其子模型,如个人资料、父母等。现在form 是独立的,与详细信息无关页。表格仅用于输入信息。那是我如何在表单中使用帮助文本但我可以在模型字段中定义相同的 help_text 的示例
    • 在这种情况下,像编辑一样将实例加载到表单中,因此您可以访问字段名称、字段值和字段帮助文本。只是您没有将其呈现为带有输入字段的实际 html 表单。
    • 但在详细信息页面上,我展示了大约 10 个不同的对象,它们有 10 种不同的形式。我需要全部加载吗?或者我只是想在视图中制作所有这些字典,然后在模板中显示
    • 是的,您可以将所有帮助文本放在字典中,将其传递给模板,并从字段定义中指向它,例如 help_text=constants.HELPTEXTS['student_number'],不要定义视图中的字典,但在一个常量文件中,或者可能是 forms.py
    【解决方案2】:

    是的,你可以!就像您的表单一样,您可以将 help_text 添加到您的模型字段中。

    【讨论】:

    【解决方案3】:

    如果您想为每个字段使用带有简短帮助文本的标准管理员更改表单,但有时觉得需要给出更长的解释,甚至是包含一些示例值的表格(不将用户限制在预定义的集合中)选择)你可以这样做:

    my_strange_field = models.FloatField('strange parameter', validators=[MinValueValidator(1.0)],
                                         help_text='corr. factor x >= 1 <img src="/static/admin/img/icon-unknown.gif" '
                                                   'width="15" height="15" title="typical values:\n'
                                                   'cow:\t2..3\ncat:\t5..7\ndog:\t11..15')
    

    这样您就可以得到一个简短的文本“corr. factor x >= 1”,后跟一个漂亮的问号,它会显示一个类似于工具提示的表格,而无需修改 change_form 模板。

    【讨论】:

      【解决方案4】:

      使用模型表单时,您可以将标签和 help_texts 添加到模型生成的字段中。 see docs

      class PupilForm(forms.ModelForm):
      
        class Meta:
          model = Pupil
      
          fields = ['student_number',]
          labels = {'student_number': "Student Number",}
          help_texts = {'student_number': "Unique identifier for the student",}
      

      【讨论】:

        【解决方案5】:

        在表单中添加 help_texts 后,你应该在前端这样做:

        <label title="{{ form.name.help_text }}" for="{{ form.name.id_for_label }}">Your label</label> 
        {{ form.name }} {{ form.quantity }}
        

        【讨论】:

          猜你喜欢
          • 2018-11-22
          • 2019-12-02
          • 2015-09-28
          • 1970-01-01
          • 2013-04-13
          • 2011-04-13
          • 2017-04-14
          • 2017-07-30
          • 2011-09-30
          相关资源
          最近更新 更多