Django 1.7 迁移未被识别

4
使用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文件中,否则不会检测到任何内容。

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

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

或者有更好的方法吗?
1个回答

3

您应该避免在设置文件中添加逻辑,考虑在使用runserver进行测试时使用--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 ...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接