我正在设计类似于Django的Admin.Autodiscover()的东西。
我面临的第一个障碍是获取调用admin.autodiscover()的文件路径,以便我可以遍历该文件夹中的应用程序/库,并找出应该在管理中保留哪些模型。
我该如何做到这一点?
我正在设计类似于Django的Admin.Autodiscover()的东西。
我面临的第一个障碍是获取调用admin.autodiscover()的文件路径,以便我可以遍历该文件夹中的应用程序/库,并找出应该在管理中保留哪些模型。
我该如何做到这一点?
使用 traceback
。
我发现有一种方法可以实现:
import traceback
def get_caller_filename():
# last element ([-1]) is me, the one before ([-2]) is my caller. The first element in caller's data is the filename
return traceback.extract_stack()[-2][0]
your.autodiscover(__file__)
,甚至是 your.autodiscover(dirname(__file__))
。那样,阅读你代码的人就不必寻找autodiscover
函数中的魔法,或在文档中查找了。