Cod*_*ngo 13 django django-admin
如何检查给定模型的modeladmin是否存在?
通过使用admin.site对象注册模型来创建modeladmins.如何检查站点对象以查看已注册的模型以及admin_class?
Dan*_*man 16
有趣的问题,这让我做了一点挖掘.
一旦注册了管理类,它们就会存储在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)
Run Code Online (Sandbox Code Playgroud)
一旦实际导入了 - 通常是通过admin.autodiscover()urls.py中的行 - admin.site._registry将包含这样的内容:
{<class 'myapp.models.MyModel'>:
<django.contrib.admin.options.ModelAdmin object at 0x10210ba50>}
Run Code Online (Sandbox Code Playgroud)
并且您将MyModel通过使用模型本身作为键来获取ModelAdmin对象:
>>> admin.site._registry[MyModel]
<django.contrib.admin.options.ModelAdmin object at 0x10210ba50>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2332 次 |
| 最近记录: |