带有 CORS 转储数据的 Django 1.9:“corsheaders_corsmodel”不存在

Posted

技术标签:

【中文标题】带有 CORS 转储数据的 Django 1.9:“corsheaders_corsmodel”不存在【英文标题】:Django 1.9 with CORS dumping data: "corsheaders_corsmodel" does not exist 【发布时间】:2016-03-24 18:18:53 【问题描述】:

我正在开发一个带有跨站点引用的 Django (1.9) Rest 后端和 AngularJS 前端。在尝试执行./manage.py dumpdata 命令时,它会抛出以下异常:

$ python manage.py dumpdata -o dev/dumpdata.json
CommandError: Unable to serialize database: relation 
"corsheaders_corsmodel" does not exist
LINE 1: SELECT COUNT(*) AS "__count" FROM "corsheaders_corsmodel"

知道怎么处理吗?

【问题讨论】:

您是否安装了当前版本的 corsheaders? django-cors-headers==1.1.0 您能否选择一个正确答案来回答这个问题?看来@myk-willis 是正确的。 【参考方案1】:

我遇到了同样的问题,并通过专门为 corsheaders 应用程序调用 python manage.py makemigrations 来解决它:

$ python manage.py makemigrations corsheaders
$ python manage.py migrate

我认为在我的案例中发生的情况是,在从 Django 1.8 升级到 1.9 之后,当我更新我的数据库时,从未应用过初始迁移。

我通过注意到corsheaders 应用程序未在python manage.py migrateApply all migrations 输出中列出来跟踪它:

$ python manage.py migrate
Operations to perform:
  Apply all migrations: sessions, admin, xyz, auth, contenttypes
Running migrations:
  No migrations to apply.

然而,为 corsheaders 运行手动迁移实际上会创建初始迁移:

$ python manage.py makemigrations corsheaders
Migrations for 'corsheaders':
  0001_initial.py:
    - Create model CorsModel

完成此操作后,migrate 会在输出中显示corsheaders,并按预期成功应用迁移:

$ python manage.py migrate
Operations to perform:
  Apply all migrations: corsheaders, sessions, admin, xyz, auth, contenttypes
Running migrations:
  Rendering model states... DONE
  Applying corsheaders.0001_initial... OK

【讨论】:

【参考方案2】:

如果 corsheaders_corsmodel 表不存在,则没有要转储的数据。 所以你可以运行:

$python manage.py dumpdata --exclude=corsheaders 

我遇到了同样的问题,我就是这样解决的。

【讨论】:

以上是关于带有 CORS 转储数据的 Django 1.9:“corsheaders_corsmodel”不存在的主要内容,如果未能解决你的问题,请参考以下文章

带有 CSRF/CORS 的带有 TokenAuthentication 的 Django REST 框架

带有 CSRF/CORS 的带有 TokenAuthentication 的 Django REST 框架

Django 1.9 加载数据错误

刷新单应用程序 django 1.9

Django 1.9 迁移问题

如何在 django 1.9+ 中合并连续的数据库迁移?