1
我有以下情形:Django的 - 如何属性移动到另一个模型,并删除它
class C():
y = models.Integer...
z = models.Integer...
class D():
y2 = models.Integer...
z2 = models.Integer...
我希望将数据从属性Y复制并粘贴到Y2。好的,我创建了一个数据迁移工作。简而言之:
from greatapp.models import C, D
class Migration(migrations.Migration):
def move_info_to_class_d(apps, schema_editor):
objs = C.objects.all()
for obj in objs.iterator():
d = D.objects.create(y2=obj.y)
operations = [
migrations.RunPython(move_info_to_class_d)
]
请注意,我也想删除从C类的属性,所以代码应该是这样的:
class C():
z = models.Integer...
class D():
y2 = models.Integer...
z2 = models.Integer...
一切正常,对吧?时间提交。
哦,等等!执行此代码的下一个人将会遇到错误,因为数据迁移尝试访问不再存在的属性(在这种情况下为y)。
有没有人知道解决方法(不需要.sql文件)将该属性复制到另一个模型类,然后从源类中删除它?
它的工作,谢谢! ps:我使用iterator()来禁用内部缓存,因为我的电脑内存不足,无论何时运行没有它的循环(这是一个非常大的数据集) – almanegra