2014-09-06 115 views
4

使用Django 1.7,它是新的遷移我遇到了一個奇怪的問題。Django 1.7遷移沒有被拾起

我拆我的設置文件分成3個文件,我一直做前期版本1.7如...

/settings 
    __init__.py 
    base.py 
    development.py 
    production.py 

__init__.py

from .base import * 

if sys.argv[1] == 'runserver': 
    from .development import * 
else: 
    from .production import * 

兩個development.pyproduction.py有有自己的數據庫設置爲那裏環境。但是,使用新的遷移系統遷移不會檢測到任何東西,除非我將數據庫設置放在base.py文件中。

我應該modifity這條線以下:

if sys.argv[1] == 'runserver' or sys.argv[1] == 'migrate': 

或者有更好的辦法?

回答

3

你應該避免添加邏輯到你的設置文件,可以考慮使用車--settings選項與的runserver測試時,像這樣:

./manage.py --settings=project.settings.development runserver 

您還可以使用環境變量DJANGO_SETTINGS_MODULE切換設置Django使用的模塊。

在你的開發環境,你可以設置:

export DJANGO_SETTINGS_MODULE=project.settings.development 

在生產環境中,可以設置DJANGO_SETTINGS_MODULE = project.settings.production。

詳細信息取決於您正在使用的部署和服務器的類型。

個人在我的開發設置我用virtualenv wrapper,我設置了這樣的事情postactivate鉤:

#!/bin/bash 
# This hook is run after this virtualenv is activated. 
export DJANGO_SETTINGS_MODULE=project.settings.local 
cd /home/user/develop/git/project 

這樣我可以輸入

workon項目

而且我已經正確設置了環境變量,並將我的shell發送到了正確的文件夾中。

你可以有一個base.py設置你的所有常見的設置文件,然後在development.py(和production.py),你可以做這樣的事情:

from .base import * 

DATABASES = ... customize DB settings used for development/production ...