这篇文章主要介绍了在脚本中如何使用django的ORM模型,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

有时候在测试django中一些模块时,不想重新跑一整个django项目,只想跑单个文件,正好写在if __name__ == '__main__': 这样也不会打扰到正常的代码逻辑
方法
正常方法
大家都知道的方法就是'python manage.py shell',当然我知道这可能不是你需要的;
更好用的方法
在脚本中import模型前调用下面几行即可:
import os, sys
BASE_DIR = os.path.dirname(os.path.abspath(__file__)) # 定位到你的django根目录
sys.path.append(os.path.abspath(os.path.join(BASE_DIR, os.pardir)))
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "dj_tasks.settings") # 你的django的settings文件接下来再调用'from XXXX.models import XXX'就不会报错了
补充知识:Django使用外部文件对models操作容易产生的问题
看代码吧!
from pv_server.models import IVCurvesInfo, FaultType
import os
import django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'PV_Moniter.settings')
django.setup()
def add_fault_type(fault_list, true_data_list, fault_decription_list=None):
for item in fault_list:
idx = fault_list.index(item)
true_data = true_data_list[idx]
fault_decription = fault_decription_list[idx] if (fault_decription_list and fault_decription_list[idx]) \
else None
FaultType.addFault.create_faultType(item, true_data,fault_decription)
if __name__ == '__main__':
add_fault_type(['normal', 'partial shadow_1', 'partial shadow_2',
'partial shadow_3', 'short circuit_1', 'short circuit_2',
'degradation_1', 'degradation_2', 'open_circuit'],
[0] * 9)
print("Done!")以上述代码为例
会产生
django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
的问题,这里要注意 明明已经增加了
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'PV_Moniter.settings')
django.setup()
但,还是报错的原因是因为!!!!在导入models的时候,还没有在django对应的环境下导入
这里导入的顺序很重要
import os
import django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'PV_Moniter.settings')
django.setup()
from pv_server.models import IVCurvesInfo, FaultType这样更换导入顺序后,就顺利的解决啦!
感谢你能够认真阅读完这篇文章,希望小编分享的“在脚本中如何使用django的ORM模型”这篇文章对大家有帮助,同时也希望大家多多支持创新互联成都网站设计公司,关注创新互联成都网站设计公司行业资讯频道,更多相关知识等着你来学习!
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、网站设计器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。