【发布时间】:2014-03-19 19:13:28
【问题描述】:
我正在开发一个 django 项目,我需要反向的 OneToOne 关系。以前,MediaFile 中有 OneToOneField photo 指向模型 Photo。我想用从Photo 指向MediaFile 的新OneToOneField mediafileobject 替换它。 (原因是照片模型在未来将变得不重要,我们希望在MediaFile admin 中为Photo 模型提供内联管理员。)
当我运行数据迁移以将旧关系复制到新关系时,一分钟后会出现一个
socket.error: [Errno 24] Too many open files
唯一可能的原因是我操作的对象太多(大约 20000 个)。如果只有几百个对象受到影响,则不会出现错误。这是我写的迁移代码:
def forwards(self, orm):
mediafiles = MediaFile.objects.all()
for mediafile in mediafiles:
try:
mediafile.photo.mediafileobject = mediafile
except AttributeError:
pass # When mediafile.photo is None
else:
mediafile.photo.save()
我该如何优化呢?我正在使用 django1.3、South0.7.3 和 MySQL。架构迁移已完成。
【问题讨论】:
标签: django django-south data-migration