2017-09-21 24 views
0

我有单个Django应用程序,它包含2个模型商店和帐户。 我注册他们admin.py,我让他们在管理中的一个块“的示例应用程序”如何将ModelAdmins从一个应用程序拆分为更多块

现在我想要一份将它分成两个区块,以更好的用户界面:

“示例应用程序”,将只包含帐户

“另一个具有自定义名称的块”将具有Store模型。

this looks like the current state

# admin.py 

class FooAdminSite(AdminSite): 
    site_title = "Foo Admin" 
    site_header = 'Foo administration' 


class AccountAdmin(admin.ModelAdmin): 
    pass 


class StoreAdmin(admin.ModelAdmin): 
    pass 


admin_site = FooAdminSite(name='admin') 
admin_site.register(Account, AccountAdmin) 
admin_site.register(Store, StoreAdmin) 

# urls.py 

from foo.admin import admin_site 

urlpatterns = [ 
    url(r'^admin/', admin_site.urls), 
] 

我怎样才能像this screenshot

  • 我不想添加其他应用程序实现这长相 - 只是想用单一的应用程序和定制 管理。

  • 我试着在apps.py中添加另一个AppConfig,但它没有帮助。

回答

0

您将需要customize the AdminSite class。作为一个起点看看:


我会在django.contrib.admin.sites.AdminSite#_build_app_dict改变app_label变量是这样的:

app_label = getattr(model_admin, 'category', None) or model._meta.app_label 

然后在你管理的模型,你可以这样做:

class StoreAdmin(admin.ModelAdmin): 
    category = 'ANOTHER BLOCK WITH CUSTOM NAME' 

这将有一定的毒效果,你将不得不对你的自定义管理网站做更多的改变来完成这项工作,但我认为他应该给你必要的信息开始。

0

Django的官方文档建议Customize the admin index page

[...]你可能要自定义Django管理索引页面的外观和感觉。 默认情况下,它按字母顺序显示已在管理应用程序中注册的INSTALLED_APPS中的所有应用程序。您可能需要对布局进行重大更改。毕竟,索引可能是管理员最重要的页面,应该很容易使用。 要自定义的模板是admin/index.html。 (与上一节中的admin/base_site.html相同 - 将其从默认目录复制到您的自定义模板目录中)。编辑文件,你会看到它使用了一个名为app_list的模板变量。该变量包含每个已安装的Django应用程序。您可以用任何您认为最好的方式来硬编码指向特定于对象的管理页面的链接。

相关问题