Django 1.7迁移没有被接收

时间:2014-09-06 14:04:45

标签: python django django-1.7

使用Django 1.7及其新的迁移我遇到了一个奇怪的问题。

我将我的设置文件拆分为3个文件,我一直在1.7版本之前完成,例如......

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

__初始化__。PY

from .base import *

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

development.pyproduction.py都有自己的环境数据库设置。但是,运行迁移的新迁移系统无法检测到任何内容,除非我将数据库设置放在base.py文件中。

我应该将此行修改为以下内容:

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

还是有更好的方法?

1 个答案:

答案 0 :(得分:3)

您应该避免在设置文件中添加逻辑,在使用runserver进行测试时,请考虑使用che - settings 选项,如下所示:

./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 project

我正确设置了环境变量,并在正确的文件夹中发送了我的shell。

您可以拥有包含所有常用设置的base.py设置文件,然后在development.py(和production.py)中,您可以执行以下操作:

from .base import *

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