如何检查给定模型是否存在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)


然后实际上导入了-通常通过urls.py中的admin.autodiscover()行-admin.site._registry将包含以下内容:

{<class 'myapp.models.MyModel'>:
    <django.contrib.admin.options.ModelAdmin object at 0x10210ba50>}


并且您将使用模型本身作为键来获取MyModel的ModelAdmin对象:

>>> admin.site._registry[MyModel]
<django.contrib.admin.options.ModelAdmin object at 0x10210ba50>

关于django - django:检查给定模型的modeladmin,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2955667/

10-13 07:57