2012-10-16 47 views
2

當使用Django admin與grappelli我希望單擊列標題將按降序對錶進行排序。Django Admin Column按降序排序

(我沒有在模型元類定義的排序字段需要有一個默認的排序爲列。)

默認行爲是升序。

第一點擊應當責令這樣的:

required behavior

回答

1

重寫def result_headers(cl)

添加這兩條線:在的ModelAdmin

..... 
    ..... 
    th_classes = ['sortable'] 
    order_type = '' 

    #new lines 

    default_order_type = getattr(attr, "admin_order_first_type", None) 
    new_order_type = default_order_type if default_order_type else 'asc' 

    #end of new lines 

    sort_priority = 0 
    sorted = False 
    ... 
    ... 

現在,您可以:

list_display = ('number_of_players', ....) 

def number_of_players(self, team): 
     return intcomma(team.number_of_players) 

number_of_players.short_description = '# num of players' 
number_of_players.admin_order_field = 'number_of_players' 
number_of_players.admin_order_first_type = 'desc' #will make the column to be ordered desc first 

我測試了它和它的作品

0

目前當您單擊列標題的表由按升序該列排序。脫字號顯示在列標題旁邊,如果您單擊該列,然後按降序對列進行排序。

這是足夠滿足您的需求嗎?還是希望列標題單擊時按降序對列進行排序?爲了獲得這種行爲,可能需要grappelli的一個(次要)補丁,或者安裝一些自定義的JS來修改hrefs。

+0

我想***先***點擊降序。 是否沒有現有選項?摘要嗎? – YardenST

+0

不是我所知道的。如果谷歌沒有幫助,你應該嘗試在羣組中詢問:https://groups.google.com/forum/?fromgroups#!forum/django-grappelli - 或者只是在github上分叉並將其設置爲配置選項,然後查看是否它被上游接受。 – scytale