2016-05-30 42 views
6

我正在製作一個沒有項目的可重用Django應用程序。這是目錄結構:如何爲可重複使用的Django應用程序進行遷移?

/ 
/myapp/ 
/myapp/models.py 
/myapp/migrations/ 
/myapp/migrations/__init__.py 

當我運行django-admin makemigrations我得到以下錯誤:

django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings. 

很明顯,這是因爲我沒有做配置,設置模塊,因爲這是一個可重複使用應用程序。不過,我仍然希望通過我的應用發佈遷移。我如何製作它們?

+0

您可以在應用程序中創建和測試遷移,然後發貨。 –

回答

7

您需要一個功能性的Django項目(安裝您的應用程序)進行遷移。

這樣做的一種常見方法是創建一個「測試」項目,其中包含Django項目的必需品,您可以運行以進行遷移等。遷移將在您的應用程序目錄中的正確位置創建所以你仍然可以在自己的可重用應用程序中擁有適當的版本控制等。

以這種方式創建的遷移將是自包含的(假設您的模型不依賴於來自其他應用的模型),並且可以作爲打包的可重用應用的一部分發布。

許多規模較大的基於Django的工程實際出貨一個測試項目作爲其代碼的一部分,從而使開發人員能夠快速得到它,以便測試應用程序並進行遷移等

4

實際運行,你不」需要有項目,所有你需要的是設置文件和腳本,運行遷移創建。 設置必須包含如下因素(最小):

# test_settings.py 

DEBUG = True 

SECRET_KEY = 'fake-key' 

INSTALLED_APPS = [ 
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'your_app' 
] 

和腳本,使遷移應該是這樣的:

# make_migrations.py 

import os 
import sys 

if __name__ == "__main__": 
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "test_settings") 
    from django.core.management import execute_from_command_line 
    args = sys.argv + ["makemigrations", "your_app"] 
    execute_from_command_line(args) 

,你應該通過python make_migrations.py運行它。希望它能幫助別人!

相關問題