网络编程
位置:首页>> 网络编程>> Python编程>> Django Admin设置应用程序及模型顺序方法详解

Django Admin设置应用程序及模型顺序方法详解

作者:临渊  发布时间:2021-01-18 14:45:18 

标签: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设置应用程序及模型顺序方法详解

来源:https://www.cnblogs.com/superhin/p/12192535.html

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com