【问题标题】:Migrate user groups and permissions in Django?在 Django 中迁移用户组和权限?
【发布时间】:2012-09-10 15:09:14
【问题描述】:

我已经构建了一个应用程序,我想将它从我的开发服务器转移到我的生产服务器。在这个应用程序中,我在 auth.group 中定义了 3 个自定义组,每个组都有特定的权限。

我尝试从 auth.group 转储数据 - 它似乎也包含权限 ID。问题是,这些 ID 在我的开发环境和生产环境之间不匹配。 auth.permission 中似乎还有一个content_type_id,我不知道它是如何关联的。

我的问题是,有没有办法使用dumpdata 或其他方式来迁移组和我的应用程序的所有相关权限?我在生产服务器上导入多个灯具没有问题,但我确实希望设置所有组,而无需通过 UI 并为每个组选择适当的权限。

【问题讨论】:

    标签: django migration django-permissions


    【解决方案1】:

    django.contrib.auth 取决于 django.contrib.contenttypes 因为auth.models.Permission.content_type 是一个 ForeignKey(ContentType)

    解决方案在您的数据转储中添加 ContentType,即。带有以下参数的转储数据:auth.group contenttypes.contenttype auth.permission

    【讨论】:

    • 好的。如果我这样做,我会收到 pk 内容类型的值。在我的其他默认数据装置中,我清除了主键,因为它们对那些特定模型无关紧要。但是,在这种情况下,这将不起作用,因为权限似乎与内容类型相关,而组与权限相关。如果我直接导​​入数据转储,我会收到主键违规,因为我已经有一些这些主键。我怎样才能使这个足够通用,以便我可以将它导入到已经有数据的系统中?
    • “如果我直接导​​入数据转储,我会收到主键违规,因为其中一些主键已经到位。”这不太可能:django 确实为固定装置插入或更新。我注意到我的答案中的参数顺序可以改进..你也尝试过这个顺序(ctypes before permission)吗?但我认为这也不重要,因为 Django 试图禁用这些可能阻止夹具导入的约束(即 FK 到 self)。如果您粘贴回溯、数据转储等会更容易......
    猜你喜欢
    • 2016-12-13
    • 2018-06-22
    • 2015-05-31
    • 1970-01-01
    • 1970-01-01
    • 2020-12-28
    • 2014-11-25
    • 2019-09-29
    • 1970-01-01
    相关资源
    最近更新 更多