Dan*_*den 17 django django-admin collapse
以同样的方式,您可以将"类":['collapse']添加到您的一个ModelAdmin字段集中,我希望能够使内联模型管理员可以折叠.
此票证,在内联相关对象的管理界面中折叠,正好讨论了我想要完成的内容.但与此同时,在等待下一个版本时,最好的工作是什么?
仅供参考:我已经提出了解决方案,但我认为存在更好的解决方案.我会让投票来照顾它.
您可以使用 grappelli - 它支持折叠字段集。它使用的解决方案与上面提到的解决方案非常相似,但是 javascript / 编码已经完成 - 您只需将“类”:(折叠关闭,)添加到您的字段集(请参阅http://readthedocs.org/docs /django-grappelli/en/latest/customization.html )
例如:
class ModelOptions(admin.ModelAdmin):
fieldsets = (
('', {
'fields': ('title', 'subtitle', 'slug', 'pub_date', 'status',),
}),
('Flags', {
'classes': ('grp-collapse grp-closed',),
'fields' : ('flag_front', 'flag_sticky', 'flag_allow_comments', 'flag_comments_closed',),
}),
('Tags', {
'classes': ('grp-collapse grp-open',),
'fields' : ('tags',),
}),
)
class StackedItemInline(admin.StackedInline):
classes = ('grp-collapse grp-open',)
class TabularItemInline(admin.TabularInline):
classes = ('grp-collapse grp-open',)
Run Code Online (Sandbox Code Playgroud)
这是我解决它的方法,但感觉太像黑客了(对于黑客来说)。
我使用 Google API 托管的 jQuery 来修改 DOM,并利用 Django 自己的“显示/隐藏”脚本。如果你查看管理页面的 html 源代码,最后加载的脚本是这样的:
<script type="text/javascript" src="/media/admin/js/admin/CollapsedFieldsets.js"></script>
Run Code Online (Sandbox Code Playgroud)
该文件中的注释给了我一个想法:利用ModelAdmin 媒体定义来加载我自己的 dom 更改脚本。
from django.contrib import admin
from django.contrib.admin.sites import AdminSite
from myapp.models import *
import settings
media = settings.MEDIA_URL
class MyParticularModelAdmin(admin.ModelAdmin):
# .....
class Media:
js = ('http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js',
media+'js/addCollapseToAllStackedInlines.js')
# .....
Run Code Online (Sandbox Code Playgroud)
然后在引用的 javascript 文件中:
// addCollapseToAllStackedInlines.js
$(document).ready(function() {
$("div.inline-group").wrapInner("<fieldset class=\"module aligned collapse\"></fieldset>");
});
Run Code Online (Sandbox Code Playgroud)
最终结果仅适用于 StackedInline,不适用于 TabularInline。
| 归档时间: |
|
| 查看次数: |
10238 次 |
| 最近记录: |