Django:自定义管理站点类的管理注册装饰器

Jar*_*rno 3 django django-admin

所以我想使用 AdminSite 类自定义管理页面,如文档中所述。

from django.contrib.admin import AdminSite
from .models import MyModel

class MyAdminSite(AdminSite):
    site_header = 'Monty Python administration'

admin_site = MyAdminSite(name='myadmin')
Run Code Online (Sandbox Code Playgroud)

但是admin_site.register(MyModel)我想使用寄存器装饰器,而不是使用

from django.contrib.admin import ModelAdmin

@admin_site.register(MyModel)
class MyModelAdmin(ModelAdmin):
    pass
Run Code Online (Sandbox Code Playgroud)

但是,这只会引发错误TypeError: 'NoneType' object is not callable。现在是否有AdminSiteDjango子类的注册装饰器(1.9) 或者我错过了什么?

小智 5

您可以site像这样使用关键字参数:

@admin.register(MyModel, site=MyAdminSite )

from django.contrib import admin
...

@admin.register(MyModel, site=MyAdminSite)
class MyModelAdmin(ModelAdmin):
    pass
Run Code Online (Sandbox Code Playgroud)

关于注册装饰器的文档:https :
//docs.djangoproject.com/en/1.9/ref/contrib/admin/#the-register-decorator

  • 它实际上是`@admin.register(MyModel, site=admin_site)` (2认同)
  • 您也可以使用 functools 中的 partial 并执行:`myadmin_register = partial(admin.register, site=admin_site)` 然后您可以使用 @myadmin_register 装饰器和 `@myadmin(MyModel)`。 (2认同)