是否有人知道是否有正确的方法以清脆的形式删除标签?
我得到了这个:
self.fields['field'].label = ""
但这不是一个很好的解决方案。
答案 0 :(得分:35)
只是做:
self.helper.form_show_labels = False
删除所有标签。
答案 1 :(得分: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-forms
答案 2 :(得分:8)
使用Boostrap(see documentation)
以您的形式:
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
在你的模板中:
<form method='POST' action=''>{% csrf_token %}
{% crispy form %}
<input type='submit' value='Submit' class='btn btn-default'>
</form>
答案 3 :(得分:5)
如果你只想从输入中删除一些标签,那么明确地不要在模型定义中给出标签名称,即:
field = models.IntegerField("",null=True)
答案 4 :(得分:2)
下面的解决方案使您可以从常规控件或香脆控件中移除标签。标签文本不仅消失了,而且标签使用的空间也被删除,因此您不会以空白标签占用空间并弄乱您的布局而结束。
下面的代码在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__"
除了他没有将代码行放在正确的位置之外,我不清楚OP所显示的代码段存在什么问题。这似乎是最好和最简单的解决方案。
答案 5 :(得分:0)
删除所有标签:
self.helper.form_show_labels = False
显示特定标签当全部为假时:
HTML('<span>Your Label</span>')
禁用特定字段的标签当全部为真时
self.fields['fieldName'].label = True
示例:
Row(
HTML('<span> Upolad Government ID (Adhar/PAN/Driving Licence)</span>'),
Column('IdProof',css_class='form-group col-md-12 mb-0'),
css_class='form-row'
),