2016-11-29 28 views
1

似乎是一個非常簡單的問題,但由於某種原因,我無法獲取任意文件,因此我在Django應用程序內創建了一個訪問我的模型/編譯的文件。Django:擁有任意文件訪問模型

analytics/ 
    analytics/ 
    settings.py 
    etc... 
    mapper/ 
    models.py 
    views.py 
    filetoDothings.py 

我想「fileToDoThings.py」做的事情與我的模型,但是當我把代碼中filetodothings甚至簡單的幾行,並嘗試導入模型,我收到以下錯誤:「請求設置。沒有配置DEFAULT_INDEX_TABLESPACE,但設置你必須定義環境變量DJANGO_SETTINGS_MODULE或致電settings.configure()」

很多搜​​索的使我發現類似這樣的答案:

sys.path.append("path/toproject") 
os.environ["DJANGO_SETTINGS_MODULE"] = "myApp.settings" 
from django.contrib.auth.models import ModelName 

這工作,但只有當即時通訊將任意文件存儲到最外面的「分析」目錄。儘管我得到了這個工作,但對我來說似乎沒有任何意義/看起來好像有很多工作要讓文件訪問同一目錄中的模型。

那麼我想現在要做的就是以下,filetoDothings.py:

from models import Addresses 
usaMapPoints = Addresses.objects.filter(countryCode='US').order_by("-frequency")[:25] 
print(usaMapPoints) 

對於「插科打諢」的宗旨,我想打電話給「蟒蛇filetodothings.py」,並把它打印導致控制檯。但最終我只是試圖讓我的腦海圍繞如何創建一個可以稍後自動執行的文件。

我已經看到另一個Django應用程序的代碼,有人能夠做到這一點。

我錯過了一些非常簡單的東西嗎?

回答

2

I would like "fileToDoThings.py" do things with my models

要在命令行中執行任意操作,譜寫新的Django management command

你在特定的應用程序中編寫'lorem_ipsum.py'模塊,將其放置在fooapp/management/commands/lorem_ipsum.py。按照上面的文檔編寫它來定義一個命令。

然後,您可以將其作爲管理命令調用:python3 -m manage lorem_ipsum


Am I missing something really simple?

簡單,是的;顯而易見,不。

Django是一個框架,而不是一個庫。不同之處在於,用一個庫來編寫調用庫的代碼;通過框架,您可以編寫由框架調用的代碼。換句話說,在框架中完成事情的方法是找到代碼適合的地方,然後寫入適合這些地方的地方。