在模型和admin被register之后
apps_index = [yourmodelname]
def find_app_index(app_label):
app = apps.get_app_config(app_label)
main_menu_index = getattr(app, 'main_menu_index', 9999)
return main_menu_index
def index_decorator(func, appname):
def inner(*args, **kwargs):
templateresponse = func(*args, **kwargs)
app_list = templateresponse.context_data['app_list']
app_list.sort(key=lambda r: find_app_index(r['app_label']))
for app in app_list:
print('app', app)
if app["app_label"] == appname:
models = app["models"]
new_models = []
for i in models:
model_name = i["object_name"]
pos = apps_index.index(model_name)
new_models.append({"pos": pos, "model": i})
new_models.sort(key=lambda s: s["pos"])
models = [x["model"] for x in new_models]
app["models"] = models
return templateresponse
return inner
admin.site.index = index_decorator(admin.site.index, yourappname)
admin.site.app_index = index_decorator(admin.site.app_index, yourappname)