2009-11-19 143 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',] 
 
    }) 
 
]