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