我正在构建一个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",
}
}