2009-11-19 142 views
4

有没有办法让字段集可折叠,但是开始展开?将折叠添加到字段集类时,它将获得该功能,但会开始折叠。我查看了显示/隐藏字段集内容的JS,但看起来并不像我想要的那样做,所以我假设我必须将我的拥有。只是想在我完成这项工作之前进行检查。Django Admin - 将折叠添加到字段集,但让它开始展开

回答

2

django-grappelli提供了此功能之一。这是关于该功能的wiki page(带截图)。

+0

谢谢,我很可能最终与该会。我们在另外两个项目中使用了grappelli,我知道它可以做到这一点,当时没有想到它。 – 2009-11-20 15:17:37

0

老问题,但我遇到了同样的一个,并可以使用标准的Django来实现的答案想出了:

创建文件:管理/(APP)在/(模型)/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 %} 

有关使用,而不是 “正规军” 的jQuery django.jQuery的更多信息,请参见:http://blog.picante.co.nz/post/Customizing-Django-Admin-with-jQuery--Getting--is-not-a-function/

2

从Setomidor答案开始,我想建议一个更简单的替代方案,它完全符合你的要求(如果Grappelli不是一个选项,显然)。

创建模板覆盖中的说明(admin/(app)/(model)/change_form.html)和不是删除了“添加”模式的情况下可折叠效果,只需呼叫现场设置崩塌的点击方法(即与小链接显示/隐藏文本),以便在页面加载后立即展开整个字段集。

7

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); 
+0

我调整了JavaScript以将“打开”更改为“隐藏” – mogga 2016-03-30 22:39:54

1

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',), 
    }), 

注:如果您使用格拉佩利版本< 2.4使用“GRP-封闭”,而不是“塌陷封闭” * 实际上的倒闭,关闭“仍是工作,但建议使用新班

3

我知道这是真实的老,但我也只是遇到了这个问题。想到这个方式太难了,我发现了一个简单的解决方案,似乎完成了涉及0个插件或额外js的工作。

在字段集构建“倒塌”,而不是“崩溃”添加到类:

fieldsets = [ 
 
    ('Start Expanded', { 
 
    'fields': ['field1', 'field2', 'field3'], 
 
    'classes': ['collapse in',] 
 
    }) 
 
]