如何在交互式会话中重新加载Django模型而不丢失我的本地变量?

15 浏览
0 Comments

如何在交互式会话中重新加载Django模型而不丢失我的本地变量?

我正在使用一个交互式shell进行研究,并使用Django应用程序(shell_plus)来存储数据并使用方便的管理界面进行浏览。\n偶尔我会添加或更改一些应用程序模型,并运行syncdb(或在更改模型时运行South迁移)。即使重新导入应用程序模型,模型的更改也不会在我的交互式会话中生效。因此,我被迫重新启动shell_plus,并在此过程中丢失了宝贵的locals()。\n在会话期间有没有办法重新加载模型?\n谢谢!

0
0 Comments

问题的原因是在进行交互式会话时,重新加载Django模型会导致本地变量丢失。作者尝试使用一个代码片段重新构建AppCache,并删除所有的.pyc文件以确保reload()函数可以加载模型.py文件的更改。然而,尽管作者删除了.pyc文件并运行了代码片段,模型仍然没有被更新,尝试访问新添加的字段时出现AttributeError错误。作者尝试在ipython shell中重新导入模型类,但仍然无法访问新属性。作者尝试的步骤是:添加新的字段到模型 -> 运行syncdb命令 -> 清除.pyc文件 -> 运行代码片段 -> 重新导入更新后的模型 -> 创建模型的新实例 -> 访问新添加的字段。建议作者尝试安装ipython并再次尝试,同时需要创建更新后模型的新实例。

0