如何在自定义django表单中隐藏django标签?

时间:2012-09-26 08:41:15

标签: python django forms widget

我有一个自定义表单,可以创建字段的隐藏输入:

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()

7 个答案:

答案 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_pform.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' : '',
    }