3

我有一个 django 1.5 应用程序,现在我将它迁移到 django 1.7 并且应用程序在旧数据库上运行良好。但现在我想使用 django 1.7 为该应用程序创建迁移。

我删除了旧的迁移,只保留了带有 __ init__ 文件的迁移文件夹

然后我跑了./manage.py makemigrations

在运行./manage.py migrate它时会出现一些错误。

django.db.utils.ProgrammingError: relation "django_site" does not exist
LINE 1: SELECT (1) AS "a" FROM "django_site" LIMIT 1

我已将 django_sites 添加到已安装的应用程序中。

更新到本机迁移时,是否有任何特定的方式来创建/应用迁移?

4

2 回答 2

3

您有一个依赖于 django.contrib.site 的迁移,但相关的表不可用。你可以

  • 在 INSTALLED_APPS 中向上移动 django.contrib.site
  • dependencies检查迁移的属性

无论如何,我认为您的问题在于某些字段的默认值。

如果您没有找到相关的应用程序,您可以:

  1. 禁用 INSTALLED_APPS 中的所有应用
  2. 启用第一个
  3. 运行 makemigrations
  4. 删除所有迁移
  5. 启用下一个应用程序
  6. 运行 makemigrations ...重复步骤 4..6 直到出现错误
于 2014-11-27T18:26:50.647 回答
0

文档中

如果您已经使用 South 创建了预先存在的迁移,那么使用 django.db.migrations 的升级过程非常简单:

  • 确保所有安装都与它们的迁移完全同步。
  • 从 INSTALLED_APPS 中删除“南”。
  • 删除所有(编号的)迁移文件,但不删除目录或init .py - 确保也删除 .pyc 文件。
  • 运行 python manage.py makemigrations。Django 应该看到空的迁移目录并以新格式进行新的初始迁移。运行 python manage.py 迁移。Django 将看到初始迁移的表已经存在并将它们标记为已应用而不运行它们。

我怀疑你忘了

find . -iname "*.pyc" | xargs rm
于 2014-11-06T09:08:18.193 回答