Gab*_*ley 17 python django django-admin
我有一些看起来像这样的Django表单代码:
class GalleryAdminForm(forms.ModelForm):
auto_id=False
order = forms.CharField(widget=forms.HiddenInput())
Run Code Online (Sandbox Code Playgroud)
这使得表单字段消失了,但它在Django管理页面中留下了标签"Order".如果我使用:
order = forms.CharField(widget=forms.HiddenInput(), label='')
Run Code Online (Sandbox Code Playgroud)
我仍然留下了字段和标签之间的":".
我如何隐藏整个事情?!
emi*_*der 39
Oraculum做对了.你不应该在客户端清理它.如果它是杂乱的,那么你根本不应该把它发送到客户端.在Oraculum的答案的基础上,您应该使用自定义表单模板,因为您可能仍然需要表单中的隐藏值.
{% 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 %}
Run Code Online (Sandbox Code Playgroud)
使用自定义表单模板来控制隐藏字段更加清晰,因为它不会向客户端发送无关信息.
Ane*_*pic 36
我不敢相信有几个人建议使用jQuery ...
这是一个案例:当你知道的唯一工具是锤子时,一切看起来像钉子?
来吧,如果你打算从客户端做到这一点(而不是在后端代码中解决问题的根源),肯定正确的地方是CSS吗?
如果你在管理站点然后它有点难,但如果它是一个常规页面,那么很容易从表单模板中省略整个标签,例如
如果您在管理站点中,那么您仍然可以覆盖GalleryAdminForm类中的BaseForm的as_table,as_ul,as_p方法(请参阅django/forms/forms.py),以省略标签为空白的任何字段的标签(或==':'因为值可能在此渲染阶段)
(...查看forms.py的 160-170行似乎Django 1.2应该正确省略':',如果标签是空白的,那么我猜你是旧版本的?)
Gui*_*ert -22
如果你使用 JQuery 这应该可以解决问题:
您的表格
TO_HIDE_ATTRS = {'class': 'hidden'}
class GalleryAdminForm(forms.ModelForm):
auto_id=False
order = forms.CharField(widget=forms.TextInput(attrs=TO_HIDE_ATTRS))
Run Code Online (Sandbox Code Playgroud)
添加到模板的 Javascript 代码
$(document).ready(function(){
$('tr:has(.hidden)').hide();
});
Run Code Online (Sandbox Code Playgroud)
如果您将表单呈现为表格,则此方法有效。如果您想让它适用于任何类型的表单渲染,您可以执行以下操作:
$(document).ready(function(){
$('{{ form_field_container }}:has(.hidden)').hide();
});
Run Code Online (Sandbox Code Playgroud)
并添加form_field_container到您的模板上下文中。一个例子:
如果您像这样呈现表单:
<form>
<span>{{ field.label_tag }} {{ field }}</span>
</form>
Run Code Online (Sandbox Code Playgroud)
您的背景必须包括:
'form_field_container': 'span'
Run Code Online (Sandbox Code Playgroud)
你明白了...
| 归档时间: |
|
| 查看次数: |
17258 次 |
| 最近记录: |