如何更改 dumpdata 命令输出夹具中权限字段的格式?

Posted

技术标签:

【中文标题】如何更改 dumpdata 命令输出夹具中权限字段的格式?【英文标题】:How do I change the format of the permissions field in the outputted fixture for the dumpdata command? 【发布时间】:2021-09-23 23:47:47 【问题描述】:

当我使用 dumpdata 命令为用户组创建数据夹具时:

python manage.py dumpdata auth.Group --indent 4 > fixtures.json

我以以下格式获取权限的ID(23、25、26):


    "model": "auth.group",
    "pk": 7,
    "fields": 
        "name": "Subscribers",
        "permissions": [
            23,
            25,
            26 
        ]
    

我如何让它在权限字段中采用以下格式?


    "model": "auth.group",
    "pk": 7,
    "fields": 
        "name": "Subscribers",
        "permissions": [
            ["add_location", "main", "location"],
            ["change_location", "main", "location"],
            ["delete_location", "main", "location"]
        ]
    

我查阅了文档,但找不到任何内容。

【问题讨论】:

【参考方案1】:

要在使用dumpdata 命令进行序列化时使用外键模型的自然键((codename, app_label, model)Permission 模型的自然键),您需要使用--natural-foreign flag,如文档中所述:

python manage.py dumpdata auth.Group --natural-foreign --indent 4 > fixtures.json

【讨论】:

以上是关于如何更改 dumpdata 命令输出夹具中权限字段的格式?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 call_command 和 dumpdata 命令将 json 保存到文件

由于夹具错误,Django datadump 和 loaddata 无法正常工作

使用 Django dumpdata 转储整体数据的子集?

django 在向后迁移/ loaddata 后从夹具加载数据使用的是模型模式而不是数据库模式

如何在生产环境中使用数据库夹具

python测试开发django-176.数据库迁移数据(manage.py dumpdata)