有没有办法让字段集可折叠,但是开始扩展?向场集集类添加折叠时,它会获取功能但会开始折叠。我已经看过显示/隐藏字段集内容的JS,但看起来没有任何内容可以做我喜欢的内容,所以我假设我必须滚动拥有。只是想在我完成这项工作之前检查一下。
答案 0 :(得分:9)
admin.py:
class PageAdmin(admin.ModelAdmin):
fieldsets = (
(None, {
'fields': ('title', 'content', )
}),
('Other Informations', {
'classes': ('collapse', 'open'),
'fields': ('slug', 'create-date',)
}),
)
模板/ app_label /模型名称/ change_form.html:
{% extends "admin/model_name/change_form.html" %}
{% block extrahead %}
{{ block.super }}
<script src="{{ STATIC_URL }}admin/js/collapse-open.js" type="text/javascript"></script>
{% endblock %}
静态/管理/ JS / collapse-open.py:
(function($) {
$(document).ready(function() {
$('fieldset.collapse.open').removeClass('collapsed');
});
})(django.jQuery);
答案 1 :(得分:5)
我知道这已经很老了,但我也遇到过这个问题。在考虑得太难之后,我找到了一个简单的解决方案,似乎完成了涉及0个插件或其他js的工作。
在fieldsets中构建Add&#39; collapse in&#39;而不是'崩溃&#39;上课:
fieldsets = [
('Start Expanded', {
'fields': ['field1', 'field2', 'field3'],
'classes': ['collapse in',]
})
]
&#13;
答案 2 :(得分:2)
django-grappelli将此作为功能之一。这是关于该功能的wiki page(带有屏幕截图)。
答案 3 :(得分:2)
从Setomidor回答开始,我想建议一个更简单的替代方案,它可以完全符合您的要求(如果Grappelli不是一个选项,显然)。
按照说明(admin/(app)/(model)/change_form.html
)和创建模板覆盖,而不是删除“添加”模型案例的可折叠效果,只需调用字段的click方法 - 设置collapser (即带有显示/隐藏文本的小链接),以便在页面加载后立即展开整个字段集。
答案 4 :(得分:2)
使用grappelli docs只需要添加“类”:('grp-collapse grp-closed')
例如
class EntryOptions(admin.ModelAdmin):
...
fieldsets = (
('', {
'fields': ('title', 'subtitle', 'slug', 'pub_date', 'status',),
}),
('Flags', {
'classes': ('grp-collapse grp-closed',),
'fields' : ('flag_front', 'flag_sticky', 'flag_allow_comments',),
}),
注意:如果您使用grappelli版本&lt; 2.4使用'grp-closed'而不是'collapse-closed'* 实际上'崩溃 - 关闭'仍在工作,但建议使用新类
答案 5 :(得分:0)
老问题,但我遇到了同样的问题,并提出了一个可以使用标准django实现的答案:
在您的模板目录中创建文件:admin /(app)/(model)/change_form.html,以使您(应用)的(模型)使用该表单文件。
将此代码添加到文件中:
{% extends "admin/change_form.html" %}
{% block extrahead %}
<!-- Load superblock (where django.jquery resides) -->
{{ block.super }}
<!-- only do this on 'add' actions (and not 'change' actions) -->
{% if add and adminform %}
<script type="text/javascript">
(function($) {
$(document).ready(function($) {
//Remove the 'collapsed' class to make the fieldset open
$('.collapse').removeClass('collapsed');
//Remove the show/hide links
$('.collapse h2 a').remove();
//Tidy up by removing the parenthesis from all headings
var $headings = $(".collapse h2");
$headings.each(function(i, current){
var str = $(current).text();
parenthesisStart = str.indexOf('(');
$(current).text(str.substring(0, parenthesisStart));
});
});
})(django.jQuery);
</script>
{% endif %}
{% endblock %}
有关使用django.jQuery而不是“常规”jQuery的更多信息,请参阅:http://blog.picante.co.nz/post/Customizing-Django-Admin-with-jQuery--Getting--is-not-a-function/
答案 6 :(得分:0)
我能找到的最快的方法是在字段集中添加一个新类start-open
classes = ['collapse', 'start-open']
,然后修改static/admin/js/collapse.js
。
来自:
// Add toggle to anchor tag
var toggles = document.querySelectorAll('fieldset.collapse a.collapse-toggle');
var toggleFunc = function(ev) {
ev.preventDefault();
var fieldset = closestElem(this, 'fieldset');
if (fieldset.classList.contains('collapsed')) {
// Show
this.textContent = gettext('Hide');
fieldset.classList.remove('collapsed');
} else {
// Hide
this.textContent = gettext('Show');
fieldset.classList.add('collapsed');
}
};
for (i = 0; i < toggles.length; i++) {
toggles[i].addEventListener('click', toggleFunc);
}
收件人:
// Add toggle to anchor tag
var toggles = document.querySelectorAll('fieldset.collapse a.collapse-toggle');
// NEW: select toggles to open
var open_toggles = document.querySelectorAll('fieldset.collapse.start-open a.collapse-toggle');
var toggleFunc = function(ev) {
ev.preventDefault();
var fieldset = closestElem(this, 'fieldset');
if (fieldset.classList.contains('collapsed')) {
// Show
this.textContent = gettext('Hide');
fieldset.classList.remove('collapsed');
} else {
// Hide
this.textContent = gettext('Show');
fieldset.classList.add('collapsed');
}
};
for (i = 0; i < toggles.length; i++) {
toggles[i].addEventListener('click', toggleFunc);
}
// NEW: open toggles
for (i = 0; i < open_toggles.length; i++) {
toggles[i].click();
}
答案 7 :(得分:0)
所以这个对我有用:
class PageAdmin(admin.ModelAdmin):
fieldsets = (
(None, {
'fields': ('title', 'content', )
}),
('Other Informations', {
'classes': ('wide'),
'fields': ('slug', 'create-date',)
}),
)