我需要访问search_fields模型的管理选项上定义的属性.很久以前,它非常简单直接(但没有记录),即model._meta.admin.search_fields.
到达管理员是困难的部分,我能得到的最接近的是:
def admin_options(model):
from django.contrib import admin
return admin.site._registry.get(model)
Run Code Online (Sandbox Code Playgroud)
我找不到记录的._registry成员(并且下划线似乎暗示它不公开).这对于未运行的站点也不起作用admin.autodiscover().后备代码执行此操作:
try:
appname = model.__module__.split('.models')[0]
admin_module = appname + '.admin'
__import__(admin_module) # registers admin option classes with AdminSite
except:
return None
else:
return admin.site._registry.get(model)
Run Code Online (Sandbox Code Playgroud)
是否有官方(或更简单)的方式来获取模型的管理选项?
您需要确保注册代码已运行,否则网站的 _registry 中不会包含 (model, modeladmin)。
from django.contrib.admin.sites import site
# run admin registration code before we get here
for model, model_admin in site._registry.items():
if model == whatevermodel:
print(model_admin.search_fields)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
223 次 |
| 最近记录: |