【发布时间】:2014-01-29 20:57:06
【问题描述】:
在架构迁移中是否可以使用 South 执行类似以下操作?
def forwards(self, orm):
## CREATION
# Adding model 'Added'
db.create_table(u'something_added', (
(u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
('foo', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['something.Foo'])),
('bar', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['something.Bar'])),
))
db.send_create_signal(u'something', ['Added'])
## DATA
# Create Added for every Foo
for f in orm.Foo.objects.all():
self.prev_orm.Added.objects.create(foo=f, bar=f.bar)
## DELETION
# Deleting field 'Foo.bar'
db.delete_column(u'something_foo', 'bar_id')
查看prev_orm,这将使我能够访问f.bar,并一体化。我发现必须为此编写 3 个迁移非常繁重......
我知道这不是“做事的方式”,但在我看来,这确实会更干净。
顺便说一句,这样做会有真正的问题吗?
【问题讨论】:
-
我会尝试在模型字典中包含“添加”模型。那么在
create_table之后可能就可以使用self.orm.Added照常使用了,不过我没有测试。
标签: django django-south data-migration schema-migration