使用夹具将 django admin auth.groups 和用户迁移到新数据库

Posted

技术标签:

【中文标题】使用夹具将 django admin auth.groups 和用户迁移到新数据库【英文标题】:Migrating django admin auth.groups and users to a new database using fixtures 【发布时间】:2011-10-14 06:15:39 【问题描述】:

这是场景:

我正在使用 django 的管理界面,我希望能够通过固定装置加载用户和组(如果可能的话)。我可以像这样转储用户/组:

manage.py dumpdata auth auth.group > usersandgroups.json

但是在将数据加载到全新的数据库中时...

manage.py loaddata <appname>/fixtures/usersandgroups.json

我遇到与外键等有关的各种错误。下面是一个例子:

django.db.utils.IntegrityError: insert or update on table "auth_permission" violates foreign key constraint "content_type_id_refs_id_728de91f"

DETAIL: Key (content_type_id)=(37) is not present in table "django_content_type".

如果有人能指出我正确的方向,我将不胜感激。提前致谢!

【问题讨论】:

【参考方案1】:

您的转储中不仅包括用户和组,也包括权限。由于权限,您会遇到冲突。由于您不需要这些,只需将它们从您的固定装置中删除即可。

manage.py dumpdata auth.User auth.Group > usersandgroups.json

【讨论】:

不走运!这样做时我遇到了类似的错误:django.db.utils.IntegrityError: insert or update on table "auth_user_user_permissions" violates foreign key constraint "auth_user_user_permissions_permission_id_fkey" DETAIL: Key (permission_id)=(111) is not present in table "auth_permission". 实际上你确实帮助我指出了正确的方向!我从我的“原型”数据库中清除了所有权限(通过 django 的管理界面);以上述方式导出数据;然后将其加载到新数据库中而没有错误。谢谢!!

以上是关于使用夹具将 django admin auth.groups 和用户迁移到新数据库的主要内容,如果未能解决你的问题,请参考以下文章

(Django)当我尝试将夹具文件加载到我的数据库中时,我不断收到字段冲突错误

Django - 夹具中的外键

将夹具上传到在 AWS EC2 实例的 docker 容器中运行的 django

为啥我的夹具没有安装在 django 项目上?

加载夹具时 django unittest 出错

安装夹具(SQLite3 数据库)时,cygwin 上的 Django loaddata 命令返回错误