【问题标题】:Adding new field to existing database table in django python在 django python 中向现有数据库表添加新字段
【发布时间】:2018-03-06 15:08:10
【问题描述】:

我有一个与我的 django 应用程序连接的 Postgresql 数据库,现在我在数据库中有一个现有表,并想使用 migrate 命令向该表添加一个新字段。但是当我尝试将这个新字段添加到我的 models.py 并运行 makemigration 和 migrate 命令时,django 说没有要应用的新迁移。您能帮我了解如何向现有表添加新字段吗?

【问题讨论】:

  • 编辑模型然后运行makemigrations 是添加字段的正确方法。因此,如果这不起作用,您需要在问题中添加更多信息以解释问题所在。型号是什么?有managed=False吗?该应用程序已经存在哪些迁移?
  • 您是否已将您的应用添加到INSTALLED_APPS 设置?
  • 是的,我确实添加到已安装的应用程序中并尝试使用该特定应用程序名称,不知道为什么它没有检测到

标签: django postgresql django-models database-migration


【解决方案1】:

经过长时间的研究,我得到了如下解决方案:

pip install django-extensions

并将其添加到 settings.py 的安装应用中

INSTALLED_APPS = [
    'django_extensions'
]

现在,为已安装的应用运行迁移

python manage.py makemigrations your_app_name
python manage.py migrtate your_app_name

完成!查看您的数据库...

【讨论】:

    【解决方案2】:

    尝试运行 makemigrations 命令,指定您的应用名称,如下所示:

     python manage.py makemigrations myapp
    

    然后尝试运行迁移命令

    【讨论】:

    • 尝试删除应用文件夹中的 migrations 文件夹并运行 makemigrationsmigrate 命令
    • 这里发生了同样的情况,我尝试了所有已知的方法,makemigrations 和 migrate,从应用程序中删除迁移目录,确保应用程序在已安装的应用程序上。值得一提的是,我使用的是 django 1.11.4
    猜你喜欢
    • 1970-01-01
    • 2014-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-24
    • 1970-01-01
    • 1970-01-01
    • 2017-02-14
    相关资源
    最近更新 更多