2017-09-21 27 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應用程序。您可以用任何您認爲最好的方式來硬編碼指向特定於對象的管理頁面的鏈接。

相關問題