【发布时间】:2014-05-20 15:48:57
【问题描述】:
我想将数据从 ManyToMany-Field 迁移到 ForeignKey-Field。由于我在之前的迁移中向另一个方向(从 ForeignKey 到 ManyToMany)迁移了数据,并且将一步部署这两个迁移,我想这应该可行。
我有这个模型:
class Log(models.Model):
contacts = models.ManyToManyField(Contact, related_name='contact_logs', blank=True, null=True)
我添加了新字段:
class Log(models.Model):
contact = models.ForeignKey(Contact, blank=True, null=True)
contacts = models.ManyToManyField(Contact, related_name='contact_logs', blank=True, null=True)
然后我做了:
$ ./manage.py schemamigration myapp --auto
$ ./manage.py datamigration myapp move_contacts_data
现在我尝试编写数据迁移。这就是我以前的方式 将数据从 ForeignKey 迁移到 ManyToMany:
def forwards(self, orm):
"Write your forwards methods here."
for log in orm.Log.objects.all():
if log.contacts:
log.contact.add(log.contacts)
log.save()
但这似乎并没有反过来奏效。我明白了:
$ ./manage.py migrate myapp :(
Running migrations for myapp:
- Migrating forwards to 0072_move_contacts_data.
contacts:0072_move_contacts_data
Error in migration: myapp:0072_move_contacts_data
AttributeError: 'NoneType' object has no attribute 'add'
谁能帮帮我?
【问题讨论】:
标签: django django-south data-migration