【问题标题】:Django 1.7 migrations not being picked upDjango 1.7 迁移没有被选中
【发布时间】:2014-09-06 14:04:44
【问题描述】:

使用 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 文件中。

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

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

还是有更好的方法?

【问题讨论】:

    标签: python django django-1.7


    【解决方案1】:

    您应该避免在设置文件中添加逻辑,在使用 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
    

    这样我就可以打字了

    正在进行的项目

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

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

    from .base import *
    
    DATABASES = ... customize DB settings used for development/production ...
    

    【讨论】:

      猜你喜欢
      • 2014-12-13
      • 2014-05-28
      • 2014-12-29
      • 1970-01-01
      • 2015-10-31
      • 2015-02-09
      • 2014-12-21
      • 2015-02-02
      • 2015-05-06
      相关资源
      最近更新 更多