Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django数据迁移,使用South和继承_Python_Django_Django Models_Database Migration_Django South - Fatal编程技术网

Python Django数据迁移,使用South和继承

Python Django数据迁移,使用South和继承,python,django,django-models,database-migration,django-south,Python,Django,Django Models,Database Migration,Django South,我们正在将Django项目的几个实例中的数据迁移到一个新的模式 旧模式有: class Group(models.Model) class User(models.Model) 新模式有: class AccessEntity(models.Model) class Group(AccessEntity) class User(AccessEntity) 我们正在尝试使用South为这些组和用户进行数据迁移 我认为我需要使用转发规则来指定如何迁移用户,但我遇到了一些问题 主要问题是,如果要创

我们正在将Django项目的几个实例中的数据迁移到一个新的模式

旧模式有:

class Group(models.Model)
class User(models.Model)
新模式有:

class AccessEntity(models.Model)
class Group(AccessEntity)
class User(AccessEntity)
我们正在尝试使用South为这些组和用户进行数据迁移

我认为我需要使用转发规则来指定如何迁移用户,但我遇到了一些问题

主要问题是,如果要创建扩展AccessEntity类的新用户对象,如何保持用户/组的ID不变


用户和组由其拥有或分配给他们的对象引用。如果我更改他们的ID,信息就会丢失。即使我现在需要从AccessEntity扩展对象,是否有办法保持对象的相同ID

我不确定是否正确理解了您的问题,但多表模型继承的工作方式是在父模型和子模型中有一个隐式的一对一字段。所以,如果AccessEntity有一个ID字段,则用户和组都将使用AccessEntity的ID字段

如果创建AccessEntity,使其具有字段
ID
,则可以在编写正向(数据)迁移时为其分配。这样可以确保AccessEntity获得正确的ID

如果你写了一篇更长的文章,看起来你正在尝试做类似的事情

此外,对的回答也可能有帮助(请注意,原始答案中的某些内容在django/south的新版本中不起作用,请参阅我的教程/底部的答案以了解更改)

在您的情况下,可能存在的问题是,如果您已经在用户和组中拥有数据,并且id字段是自动生成的,
id
可能不明显,例如,您可能会同时拥有一个用户和一个id==1的组。如果您希望基于这些
ID
进行查询,那么这可能是一个问题,当然
ID
不能作为
AccessEntity
的主键