gpt4 book ai didi

django-forms - 带有 Bootstrap : how to get help_text into a ModelForm? 的 django 脆形式和软盘形式

转载 作者:行者123 更新时间:2023-12-04 07:42:05 24 4
gpt4 key购买 nike

我现在对 django 表单有一个小问题(但很烦人)。

我在用着:

  • 推特 Bootstrap
  • django floppyforms(仅适用于 html5 小部件)
  • django crispy-forms(用于模板标签和渲染)
  • 我的表格都是模型表格 如果可能的话,这不应该改变

  • 我已经搜索了整个网络并尝试了很多东西,但我无法弄清楚我可以将 help_text="Some random help text"注入(inject)代码的地方。所以这是我的代码(出于理智原因而缩写):
    #forms.py:

    import floppyforms as forms
    from crispy_forms.helper import FormHelper
    from crispy_forms.layout import *
    from crispy_forms.bootstrap import *
    from courses.models import *

    class CourseForm(forms.ModelForm):
    class Meta:
    model = Course
    widgets = {
    'title': forms.TextInput, # This is a floppyforms widget
    ...
    }

    def __init__(self, *args, **kwargs):
    self.helper = FormHelper()
    self.helper.form_method = 'POST'
    self.helper.form_id = ''
    self.helper.form_class = 'form-horizontal'
    self.helper.form_action = '' # redirect in the view
    self.helper.form_tag = True
    self.helper.help_text_inline = True # means that I want <span> elements
    self.helper.layout = Layout(
    Fieldset('Create a new course', # fieldset label
    Field('title', placeholder="Something...", css_class="span4"),
    ...
    ),
    FormActions(
    Submit(
    'submit',
    'Submit',
    css_class="btn-primary"
    )
    ),
    )
    super(CourseForm, self).__init__(*args, **kwargs)

    我试图将它作为一个“attrs”字典注入(inject)到小部件中,并作为一个属性注入(inject)到字段中。
    forms.TextInput(attrs={'help_text': 'Some help text'})
    Field('title', help_text="Some help text", css_class="span4")

    不用说它没有用。 我需要一个钩子(Hook)将帮助文本放入我的控件 div 内的“跨度”或“p”中,而不是放入输入小部件中。

    我的模板非常小,如果可能的话应该保持这种状态。我不想遍历表单字段:
    #create_course.html

    {% extends 'base.html'%}
    {% load crispy_forms_tags %}

    {% block content%}
    {% crispy form %}
    {% endblock content%}

    呈现为以下 html:
    <div id="div_id_title" class="clearfix control-group">
    <label class="control-label requiredField" for="id_title">
    Title
    <span class="asteriskField">*</span>
    </label>
    <div class="controls">
    <input id="id_title" class="span4 textinput textInput" type="text" placeholder="Something..." maxlength="60" required="" name="title">
    </div>
    </div>

    使用帮助文本,它应该如下所示:
    <div id="div_id_title" class="clearfix control-group">
    <label class="control-label requiredField" for="id_title">
    Title
    <span class="asteriskField">*</span>
    </label>
    <div class="controls">
    <input id="id_title" class="span4 textinput textInput" type="text" placeholder="Something..." maxlength="60" required="" name="title">
    **<span class="help-inline">Supporting help text</span>**
    </div>
    </div>

    任何帮助表示赞赏!我没有尝试通过 views.py 将代码注入(inject)表单,但我认为这样做没有意义。应该可以在 forms.py 中使用正确的钩子(Hook)和语法来做到这一点。

    对于这么简单的问题,很抱歉这么长的文字;)

    最佳答案

    我发现了问题所在。因为我并没有真正定义任何地方的字段(我只定义了字段小部件),所以我无法访问 help_text。您可以在 forms.py 中定义字段(这是不必要且不好的做法,毕竟它们是 ModelFields)或在 models.py 中设置模型的 help_text。

    希望能帮助其他有类似问题的人。

    关于django-forms - 带有 Bootstrap : how to get help_text into a ModelForm? 的 django 脆形式和软盘形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10122823/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com