2014-09-06 1 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.py и production.py тут собственные настройки базы данных для этой среды. Однако с новой миграцией система, выполняющая миграцию, не обнаруживает ничего, ЕСЛИ я не помещаю настройки базы данных в файлы base.py.

Должен ли я modifity эту строку следующее:

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

Или есть лучший способ?

ответ

3

Вы должны избегать добавления логики в файл настроек, рассмотреть возможность использования CHE --settings опцию при тестировании с runserver, как это:

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

Вы также можете использовать переменную окружения DJANGO_SETTINGS_MODULE для переключения настроек модуль, используемый Django.

В вашем развитии Enviroment вы можете установить:

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 проект

И у меня есть переменная окружения, которая правильно установлена, а моя оболочка отправлена ​​в нужную папку.

Вы можете иметь base.py настройки файл со всеми вашими общими настройками, а затем в development.py (и production.py), вы можете сделать что-то вроде этого:

from .base import * 

DATABASES = ... customize DB settings used for development/production ... 
Смежные вопросы