删除Django Crispy Forms中的标签

Ron*_*Ron 17 forms django label django-crispy-forms

有没有人知道是否有正确的方法来清除香脆的标签?

我得到了这个:

self.fields['field'].label = ""
Run Code Online (Sandbox Code Playgroud)

但这不是一个很好的解决方案.

Gly*_*son 38

做就是了:

self.helper.form_show_labels = False
Run Code Online (Sandbox Code Playgroud)

删除所有标签.

  • ``self.fields ['MYFIELD'].label = False``禁用特定字段 (4认同)
  • 隐藏复选框和单选按钮的标签:( (2认同)
  • 我尝试了 `form_show_labels = False` 并用 `self.fields['validation_CGU'].label = True` 覆盖了一个特定的字段,但它没有用,似乎全局规则优先,太糟糕了 (2认同)

Luc*_*s B 11

与Boostrap一起使用(参见文档)

在你的形式:

from crispy_forms.helper import FormHelper
from django import forms

class MyForm(forms.Form):
    [...]
    def __init__(self, *args, **kwargs):
        super(MyForm, self).__init__(*args, **kwargs)
        self.helper = FormHelper()
        self.helper.form_show_labels = False 
Run Code Online (Sandbox Code Playgroud)

在您的模板中:

<form method='POST' action=''>{% csrf_token %}
{% crispy form %}
<input type='submit' value='Submit' class='btn btn-default'>
</form>
Run Code Online (Sandbox Code Playgroud)


mar*_*jop 8

您可以编辑field.html模板:https: //github.com/maraujop/django-crispy-forms/blob/dev/crispy_forms/templates/bootstrap/field.html#L7

FormHelper向表单添加一个控制标签呈现的属性,并在该模板中使用它if.自定义FormHelper属性尚未正式记录,因为我没有时间,但我在主题演讲中谈过它们,这里有幻灯片:https: //speakerdeck.com/u/maraujop/p/django-crispy-形式


Man*_*ssi 6

下面的解决方案可让您从常规控件或脆皮控件中删除标签。不仅标签文本消失,标签使用的空间也被删除,这样您就不会出现空白标签占用空间并弄乱布局的情况。

下面的代码适用于 django 2.1.1。

# this class would go in forms.py
class SectionForm(forms.ModelForm):
    # add a custom field for calculation if desired
    txt01 = forms.CharField(required=False)

    def __init__(self, *args, **kwargs):
        ''' remove any labels here if desired
        '''
        super(SectionForm, self).__init__(*args, **kwargs)

        # remove the label of a non-linked/calculated field (txt01 added at top of form)
        self.fields['txt01'].label = ''

        # you can also remove labels of built-in model properties
        self.fields['name'].label = ''

    class Meta:
        model = Section
        fields = "__all__"
Run Code Online (Sandbox Code Playgroud)

我不清楚 OP 所显示的代码片段有什么问题,只是他没有将代码行放在正确的位置。这似乎是最好和最简单的解决方案。


小智 5

如果您只是要从输入中删除一些标签,那么在模型定义中不要明确给出标签名称,即:

field = models.IntegerField("",null=True)
Run Code Online (Sandbox Code Playgroud)