您好,登錄后才能下訂單哦!
這篇文章主要介紹了Django Admin如何設置應用程序及模型順序,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
Django默認情況下,按字母順序對模型進行排序。因此,Event應用模型的順序為Epic、EventHero、EventVillain、Event
假設你希望順序是
EventHero、EventVillain、Epic、Event。
用于呈現后臺indxe頁面的模板為admin/index.html,對應的視圖函數為 ModelAdmin.index。
def index(self, request, extra_context=None): """ Display the main admin index page, which lists all of the installed apps that have been registered in this site. """ app_list = self.get_app_list(request) context = { **self.each_context(request), 'title': self.index_title, 'app_list': app_list, **(extra_context or {}), } request.current_app = self.name return TemplateResponse(request, self.index_template or 'admin/index.html', context)
默認的get_app_list方法用于設置模型的順序。
def get_app_list(self, request): """ Return a sorted list of all the installed apps that have been registered in this site. """ app_dict = self._build_app_dict(request) # Sort the apps alphabetically. app_list = sorted(app_dict.values(), key=lambda x: x['name'].lower()) # Sort the models alphabetically within each app. for app in app_list: app['models'].sort(key=lambda x: x['name']) return app_list
因此,可以通過覆蓋get_app_list方法來修改顯示順序:
class EventAdminSite(AdminSite): def get_app_list(self, request): """ Return a sorted list of all the installed apps that have been registered in this site. """ ordering = { "Event heros": 1, "Event villains": 2, "Epics": 3, "Events": 4 } app_dict = self._build_app_dict(request) # a.sort(key=lambda x: b.index(x[0])) # Sort the apps alphabetically. app_list = sorted(app_dict.values(), key=lambda x: x['name'].lower()) # Sort the models alphabetically within each app. for app in app_list: app['models'].sort(key=lambda x: ordering[x['name']]) return app_list
以上代碼app['models'].sort(key=lambda x: ordering[x['name']])用來設置默認順序。修改后效果如下。
感謝你能夠認真閱讀完這篇文章,希望小編分享的“Django Admin如何設置應用程序及模型順序”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。