【发布时间】:2011-10-16 22:05:14
【问题描述】:
有没有办法在层次结构中的指定模型下直接列出所有 python 模块?
我有一个正在缓慢增长的 Django 网络应用,我根据这篇文章重新组织了它:
http://paltman.com/2008/01/29/breaking-apart-models-in-django/
但是,我试图通过在模块初始化文件 (__ init __.py) 中使用自省来改进他的技术,以便在从属作业中自动检测 Django 模型类的所有实例。我已经得到了这种工作,但它仍然需要它上面的树中的静态模块列表才能工作。
如果人们有兴趣,我的解决方案如下所示:
from django.db.models.base import ModelBase
from sys import modules
moduleList = ['TechTree', 'PilotAbilities']
__all__ = []
for moduleName in moduleList:
fullyQualifiedModuleName = '%s.%s' % (__name__, moduleName)
moduleObj = __import__(fullyQualifiedModuleName)
__all__ += [item for item in dir(moduleObj) if isinstance(getattr(moduleObj, item), ModelBase)]
【问题讨论】:
标签: python django introspection