2012-07-04 15 views
1

我已經在Django站點(https://docs.djangoproject.com/en/1.4/intro/tutorial01/)上學習了教程(第1部分和第2部分),並設法創建了一對文件夾並連接到我的網站。我的應用程序被稱爲 '應用',所以我的文件夾結構看起來有點像:Django創建的models.py文件是否可以被另一個python文件用來填充數據庫?

  • mainFolder
  • --- __ 初始化 __的.py
  • ---test.py
  • --- djangoSite(由Django的創建)
  • ------ manage.py
  • ------ djangosite
  • ---------其他.py文件
  • ------ 應用
  • --------- - __ 初始化 __的.py
  • --------- models.py
  • ---------其他.py文件

我改變了models.py文件是s類似於:

class Result(models.Model): 
    options = models.CharField(max_length = 1000, unique = False) 
    reverse = models.DecimalField(decimal_places = 6, max_digits = 12) 

test.py當前在其他一些類上運行了幾個測試。我想要的是我的test.py類運行這些測試並將結果保存到數據庫中(在 的列中並反向)。我希望在我的test.py類中做這樣的事情:

import models.py 
if __name__ == "__main__": 
    optionResult = someTestsThatRuns 
    reverseResult = someOtherTestThatRuns 
    models.Result c; 
    c.options = optionResult 
    c.reverse = reverseResult 

我想要最後兩行將結果保存到數據庫中。 這可能嗎?我將如何從app文件夾中導入models.py?

謝謝

編輯: 當我說someTestsThatRuns,這些都不是單元測試。它們實際上是一個函數,它返回一個列表和一些帶有'PASS'或'FAIL'的字符串。對不起

回答

3

在應用程序文件夾中創建一個空的__init__.py文件,以便Python將該目錄視爲一個包。然後執行:

from app.models import Result 

optionResult = someTestsThatRuns 
reverseResult = someOtherTestThatRuns 
c = Result() 
c.options = optionResult 
c.reverse = reverseResult 
c.save() 

這會將'c'保存到數據庫中。

請注意,Django的測試套件可以創建自己的測試數據庫,它可以在單獨的數據庫上運行測試。你可以在這裏閱讀更多關於Django測試。 https://docs.djangoproject.com/en/dev/topics/testing/?from=olddocs

+0

嗨大衛,並感謝您的第一反應!我實際上正在考慮按照你的建議(並且在發佈這個問題之前試過),但是我從models.py文件中聽到一個錯誤,說'第4行:從django.db導入模型' - ImportError:No module named db' =/ – SaiyanGirl

+0

另外,我在從您寄給我的網站閱讀後添加了編輯。我的測試不是單元測試,也不測試Django站點;它們是運行一些C++類並在字符串和列表中獲得一些結果的函數。 ( – SaiyanGirl

+0

)轉到命令行,啓動python,然後輸入import django.db。看看它是否會引發錯誤。如果它引發錯誤,Python不會在其搜索路徑中拾取django軟件包 在命令行中,import sys和print sys.path會告訴你Python搜索路徑上的目錄是什麼,Django應該安裝在其中一個目錄下,通常在site-packages中 如果import django.db從命令行工作,確保正確的Python解釋器選擇在你正在工作的任何開發環境中。 –

1

FIXED當大衛在評論中提到的,環境變量確實沒有設置。因爲我在Windows中,所以我必須做的是開始 - >計算機 - >屬性 - >高級系統設置 - >環境變量 - >添加環境變量。

在那裏,我加入「DJANGO_SETTINGS_MODULE」和它作爲「C:\路徑\爲\您的\ settings.py」位置之後,在命令提示符下,我必須做到以下幾點:

enter python 
>import sys 
>import os 
>sys.path.append(r"C:\location\to\settings.py") 
>from django.core.management import setup_environ 
>setup_environ(settings) 
>sys.path.append(os.getcwd() + '\\from\\current\\to\\models.py' 
>from models import Result 

這是所有解釋在http://www.b-list.org/weblog/2007/sep/22/standalone-django-scripts/,雖然我覺得有點難以理解。我在導入模型時遇到的另一個問題是,有兩個命名完全相同的文件夾(djangoSite),因此在導入時,計算機遇到了一些問題,試圖找出哪一個文件夾。我不得不重新命名,刪除,重置環境變量並重新檢查我的文件中的所有路徑=/

如果我的解釋不是最好的,我很難理解我做了什麼,但我確實希望這將有助於其他未來

相關問題