如何检查给定模型是否存在modeladmin?
通过使用admin.site对象注册模型来创建modeladmins。如何检查站点对象以查看已注册的模型以及admin_class?
如何检查给定模型是否存在modeladmin?
通过使用admin.site对象注册模型来创建modeladmins。如何检查站点对象以查看已注册的模型以及admin_class?
有趣的问题,这让我做了一点挖掘。
一旦注册了管理类,它们就存储在一个属性中 site
被称为对象 - 毫不奇怪 - _registry
。这是一个模型类到modeladmin类的字典 - 注意键和值都是 类而不是名字。
所以如果你有这样的admin.py:
from django.contrib import admin
from myapp.models import MyModel
class MyModelAdmin(admin.ModelAdmin):
list_display = ('field1', 'field2')
admin.site.register(MyModel, MyModelAdmin)
一旦实际上已经导入 - 通常是由 admin.autodiscover()
urls.py中的行 - admin.site._registry
将包含这样的东西:
{<class 'myapp.models.MyModel'>:
<django.contrib.admin.options.ModelAdmin object at 0x10210ba50>}
你会得到ModelAdmin对象 MyModel
通过使用模型本身作为关键:
>>> admin.site._registry[MyModel]
<django.contrib.admin.options.ModelAdmin object at 0x10210ba50>
有趣的问题,这让我做了一点挖掘。
一旦注册了管理类,它们就存储在一个属性中 site
被称为对象 - 毫不奇怪 - _registry
。这是一个模型类到modeladmin类的字典 - 注意键和值都是 类而不是名字。
所以如果你有这样的admin.py:
from django.contrib import admin
from myapp.models import MyModel
class MyModelAdmin(admin.ModelAdmin):
list_display = ('field1', 'field2')
admin.site.register(MyModel, MyModelAdmin)
一旦实际上已经导入 - 通常是由 admin.autodiscover()
urls.py中的行 - admin.site._registry
将包含这样的东西:
{<class 'myapp.models.MyModel'>:
<django.contrib.admin.options.ModelAdmin object at 0x10210ba50>}
你会得到ModelAdmin对象 MyModel
通过使用模型本身作为关键:
>>> admin.site._registry[MyModel]
<django.contrib.admin.options.ModelAdmin object at 0x10210ba50>