有没有一种方法可以直接在层次结构中的指定模型下面列出所有python模块?你知道吗
我有一个Django web应用程序正在慢慢发展,我根据这篇文章重新组织了它:
http://paltman.com/2008/01/29/breaking-apart-models-in-django/
但是,我正在尝试改进他的技术,通过使用模块初始化文件(\uuinit\uuy.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)]
嗯,您可以获取
os.path.dirname(parent.__file__)
,然后glob.glob()
或os.walk()
,然后查找其他init.py文件。你知道吗这只是一种尝试,但似乎奏效了。我运行的是python2.7.1,dir(somemodule)提供了所有相关的模块。使用openpyxl和os模块进行测试。你知道吗
注: 这可能是非常不和谐和气馁,但它似乎工作。你知道吗
注2: 那是因为我不小心用了“openpyxl”(我正在使用的一个测试)而不是列表子模块。对不起
相关问题 更多 >
编程相关推荐