gig*_*mon 10 django django-admin
如何在管理站点中创建完全隐藏的字段(输入和标签)?我知道该exclude属性,但它完全排除了模板中的字段,而我在网页中需要它,但隐藏:
class OutForm(ModelForm):
reply_to = forms.ModelChoiceField(queryset=InMessages.objects.all(), widget=forms.HiddenInput)
Run Code Online (Sandbox Code Playgroud)
在管理员模板中,我实际上可以隐藏字段,但不能隐藏其标签.
vdb*_*oor 14
Django管理员还不支持隐藏字段.有一张打开的门票:https://code.djangoproject.com/ticket/11277
但是,有些解决方法不需要jQuery.管理表单使用呈现admin/includes/fieldset.html.如果覆盖此模板,则可以注入一个CSS类来表示要隐藏的行:
<div class="form-row
{% if line.fields|length_is:'1' and line.errors %} errors{% endif %}
{% for field in line %} {{ field.field.name }}
{% if field.field.is_hidden %} has-hidden-field{% endif %} # add this part
{% endfor %}">
Run Code Online (Sandbox Code Playgroud)
这实际上是文件中的一行,我已经扩展它以使其更具可读性.
(整洁的细节:对于StackedInline/TabularInline对象,您可以在Python代码中将模板指定为变量.)
接下来,您可以在CSS中隐藏该行:
.form-row.has-hidden-field {
display: none;
}
Run Code Online (Sandbox Code Playgroud)
您可以通过管理页面加载:
{% block extrastyle %}{{ block.super }}
<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}mysite/admin.css" />{% endblock %}
Run Code Online (Sandbox Code Playgroud)
或者使用modeladmin中的媒体定义:
class Media:
css = {'all': ('mysite/admin.css',)
Run Code Online (Sandbox Code Playgroud)
您在示例中给出的是 ModelForm,而不是您应该用于管理站点的 ModelAdmin。
无论如何,排除某些字段的方法是相同的:在exclude属性中指定它:
class OutForm(ModelForm):
class Meta:
exclude = ["reply_to"]
Run Code Online (Sandbox Code Playgroud)
或者
class OutAdmin(ModelAdmin):
exclude = ["reply_to"]
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅 Django 文档:http://docs.djangoproject.com/en/1.2/ref/contrib/admin/
| 归档时间: |
|
| 查看次数: |
10219 次 |
| 最近记录: |