Django import-export如何用uuid id替换整数id?

时间:2017-12-13 16:53:29

标签: json django uuid django-import-export

我正在构建一个django应用程序,用户可以在其中导出许多彼此相关的模型的json文件。然后可以在另一台服务器上导入json fiele。由于它是另一个数据库,我无法使用在文件中导出的ID。

我使用django import-export。如何用uuids替换我的数据库中的整数id以防止双重ID问题? (特别是在使用外键或多对多关系时)。在下面的代码不能完全工作,因为Group.name不是唯一的。

我想为导入导出创建一个单独的id系统,而不会影响数据库上的id,因为我认为id处理应留给数据库,否则你会遇到麻烦。

model.py

class Group(models.Model):
   name = models.CharField(max_length=255)


class Subgroup(models.Model):
    parent_group = models.ForeignKey(Group, on_delete=models.CASCADE)
    name = models.CharField(max_length=255)

resources.py

parent_group_widget = fields.Field(
column_name='group_natural_key',
attribute='parent_group',
widget=ForeignKeyWidget(Group, 'name'))

class GroupResource(resources.ModelResource):
    class Meta:
        model = Group
        exclude = ('id',)
        import_id_fields = ('name', 'measurement_widget')


class SubgroupResource(resources.ModelResource):
    parent_group_widget = parent_group_widget
    class Meta:
        model = Subgroup
        exclude = ('id',)
        import_id_fields = ('name', 'parent_group_widget')

我想得到以下结果:

{"Group": [
    {
        "id": "1c4d4824-d890-4021-bb24-18dd5a2cd618", 
        "name": "Group_0", 
    }]
"Subgroup": [
    {
        "name": "FOOBAR", 
        "parent_group": "1c4d4824-d890-4021-bb24-18dd5a2cd618", 
    }
}

0 个答案:

没有答案