我有一个自定义表单,可以创建字段的隐藏输入:
class MPForm( forms.ModelForm ):
def __init__( self, *args, **kwargs ):
super(MPForm, self).__init__( *args, **kwargs )
self.fields['mp_e'].label = "" #the trick :)
class Meta:
model = MeasurementPoint
widgets = { 'mp_e': forms.HiddenInput() }
exclude = ('mp_order')
我必须做这个小技巧来躲避"标签,但我想要做的是从表单中删除它。我创建这样的表单:
forms.MPForm()
答案 0 :(得分:16)
我不建议删除标签,因为它使表单无法访问。您可以add a custom CSS class到该字段,也可以在您的CSS make that class invisible中。
修改强>
我错过了隐藏的输入,因此无需担心可访问性。
您可以直接在模板中呈现表单字段:
<form ...>
{% for field in form.hidden_fields %}
{{ field }}
{% endfor %}
{% for field in form.visible_fields %}
{{ field.label }} {{ field }}
{% endfor %}
</form>
答案 1 :(得分:5)
如果您使用form.as_p
或form.as_table
方法,Django无论如何都不应显示隐藏字段的标签,因此无需更改__init__
方法中的标签。
{{ form.as_table }}
如果您是customizing the form template,则可以使用field.is_hidden
属性检查该字段是否已隐藏。
{% if field.is_hidden %}
{# Don't render label #}
{% endif %}
或者,您可以loop over hidden and visible fields separately,并省略隐藏字段的标签。
答案 2 :(得分:0)
除非我误解了你的问题,否则你只需要将mp_e字段添加到元类下的排除元组。这不是你需要的吗?
class MPForm( forms.ModelForm ):
def __init__( self, *args, **kwargs ):
super(MPForm, self).__init__( *args, **kwargs )
class Meta:
model = MeasurementPoint
exclude = ('mp_order','mp_e')
答案 3 :(得分:0)
现在,(我的Django版本是2.1.4),您可以通过这种方式解决->编辑forms.py文件:
{ A, B, F }
答案 4 :(得分:0)
转到您的forms.py文件,然后 添加标签=假
为 下面
resource "aws_autoscaling_group" "instances_asg" {
max_size = 5
min_size = 2
min_elb_capacity = 2
health_check_grace_period = 300
health_check_type = "ELB"
desired_capacity = 3
force_delete = false
vpc_zone_identifier = ["${data.aws_subnet_ids.instances_subnets.*.id}"]
load_balancers = ["${aws_elb.instances_elb.name}"]
launch_template {
id = "${aws_launch_template.instances_lt.id}"
version = "$$Latest"
}
lifecycle {
create_before_destroy = true
}
}
答案 5 :(得分:0)
您需要输入False,它将起作用:
self.fields['mp_e'].label = False
django版本:2.2
答案 6 :(得分:0)
我发现这很有用,而且对我有用!
class CustomForm(forms.Form):
class Meta:
... #other properties such as model, fields, widgets and help text
labels = {
'comment' : '',
}