溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

在腳本中如何使用django的ORM模型

發(fā)布時(shí)間:2021-06-04 11:25:28 來源:億速云 閱讀:149 作者:小新 欄目:開發(fā)技術(shù)

這篇文章主要介紹了在腳本中如何使用django的ORM模型,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

有時(shí)候在測(cè)試django中一些模塊時(shí),不想重新跑一整個(gè)django項(xiàng)目,只想跑單個(gè)文件,正好寫在if __name__ == '__main__': 這樣也不會(huì)打擾到正常的代碼邏輯

方法

正常方法

大家都知道的方法就是'python manage.py shell',當(dāng)然我知道這可能不是你需要的;

更好用的方法

在腳本中import模型前調(diào)用下面幾行即可:

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文件

接下來再調(diào)用'from XXXX.models import XXX'就不會(huì)報(bào)錯(cuò)了

補(bǔ)充知識(shí):Django使用外部文件對(duì)models操作容易產(chǎn)生的問題

看代碼吧!

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!")

以上述代碼為例

會(huì)產(chǎn)生

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.

的問題,這里要注意 明明已經(jīng)增加了

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'PV_Moniter.settings')
django.setup()

但,還是報(bào)錯(cuò)的原因是因?yàn)椋。。?!在?dǎo)入models的時(shí)候,還沒有在django對(duì)應(yīng)的環(huán)境下導(dǎo)入

這里導(dǎo)入的順序很重要

import os
import django
 
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'PV_Moniter.settings')
django.setup()
 
from pv_server.models import IVCurvesInfo, FaultType

這樣更換導(dǎo)入順序后,就順利的解決啦!

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“在腳本中如何使用django的ORM模型”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI