我需要进入模型管理选项上定义的search_fields
属性。很久以前,它非常简单直接(但没有记录),即model._meta.admin.search_fields
。
到达管理员是困难的部分,我能得到的最接近的是:
def admin_options(model):
from django.contrib import admin
return admin.site._registry.get(model)
我无法找到记录的._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)
是否有官方(或更简单)方式获取模型的管理选项?
答案 0 :(得分:1)
您需要确保注册代码已经运行,或者网站不会包含_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)