如何在Django管理中隐藏HiddenInput小部件的字段标签?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (29)

我有一些Django表单代码,如下所示:

class GalleryAdminForm(forms.ModelForm):
    auto_id=False
    order = forms.CharField(widget=forms.HiddenInput())

这使得表单字段消失,但它在Django管理页面中留下了标签“Order”。如果我用:

order = forms.CharField(widget=forms.HiddenInput(), label='')

我还剩下“:”字段和标签之间的位置。

我该怎么把整件事藏起来?!

提问于
用户回答回答于

如果你使用JQuery,这应该可以做到这一点:

你的表格

TO_HIDE_ATTRS = {'class': 'hidden'}
class GalleryAdminForm(forms.ModelForm):
    auto_id=False
    order = forms.CharField(widget=forms.TextInput(attrs=TO_HIDE_ATTRS))

Javascript代码添加到你的模板

$(document).ready(function(){
    $('tr:has(.hidden)').hide();
});

如果你将表单呈现为表格,那就很有效。如果你想使它适用于任何形式的渲染,你可以做如下操作:

$(document).ready(function(){
    $('{{ form_field_container }}:has(.hidden)').hide();
});

并添加form_field_container到您的模板上下文中。一个例子:

如果你像这样渲染你的表单:

    <form>
        <span>{{ field.label_tag }} {{ field }}</span>
    </form>

你的上下文必须包括:

'form_field_container': 'span'

用户回答回答于

你不应该在客户端清理这件事。如果它是杂乱的,那么就不应该将它发送到客户端。你应该使用自定义表单模板,因为你可能仍然希望表单中隐藏的值。

{% for field in form.visible_fields %}
    <div>
        {{ field.errors }}
        <span class="filter-label">{{ field.label_tag }}</span><br>
        {{ field }}
    </div>
 {% endfor %}

 {% for field in form.hidden_fields %}
     <div style="display:none;">{{ field }}</div>
 {% endfor %}

使用自定义表单模板来控制隐藏字段更干净,因为它不会向客户端发送无关的信息。

扫码关注云+社区