如何隐藏默认标签 Django Model 表单?

dee*_*ash 4 python forms django

当我使用带有 {{form}} 标签的模型表单时,我会为每个元素获得一个默认标签。我可以从元类定义中删除它吗?

我的模型类:

class message(models.Model):
    name = models.CharField(max_length=30)
    email = models.EmailField(max_length=40)
    contact = models.IntegerField(max_length=15)
    message = models.CharField(max_length=1000,blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)

我的表格类:

class MessageForm(forms.ModelForm):
    class Meta:
        model = message
        fields = '__all__'

        widgets = {
            'name' : forms.TextInput(attrs={"value":"Name", "onfocus":"this.value = '';","onblur":"if (this.value == '')","required":""}),
            'email' : forms.TextInput(attrs={"value":"email", "onfocus":"this.value = '';","onblur":"if (this.value == '')","required":""}),
            'contact' : forms.TextInput(attrs={"value":"contact", "onfocus":"this.value = '';","onblur":"if (this.value == '')","required":""}),
            'message' : forms.Textarea(attrs={"value":"emmessage", "onfocus":"this.value = '';","onblur":"if (this.value == '')","required":""})
        }
Run Code Online (Sandbox Code Playgroud)

HTML 代码:

<div class="col-md-6 mail_right">
<form action="" method="post" >  {% csrf_token %}
    {{form}}                                    
</form>
</div>
Run Code Online (Sandbox Code Playgroud)

JPG*_*JPG 5

使用labels-- (django doc)元选项作为

class MessageForm(forms.ModelForm):
    class Meta:
        model = message
        fields = '__all__'
        labels = {
            "name": "UpdatedNameLabel",
            "email": "UpdatedEmailLabel"
        }
Run Code Online (Sandbox Code Playgroud)


Bra*_*vic 5

有多种方法可以做到这一点。但是,为什么不将verbose_name模型字段定义与所需的标签一起放入,或者如果将其留空,则标签将不会显示。

所以,在 models.py 中:

start_date = models.DateField(verbose_name="Start date")
Run Code Online (Sandbox Code Playgroud)

或者

start_date = models.DateField(verbose_name="")
Run Code Online (Sandbox Code Playgroud)

另一个选项在 forms.py 中:

email = forms.EmailField(label="")
Run Code Online (Sandbox Code Playgroud)

这对你有用吗?

  • 嗨,布兰科,verbose_name="" 有效,但是,它也会导致管理页面发生变化。我不希望标签隐藏在每个页面中 (2认同)