Djangoの南を使用して、あるモデルから別のモデルにデータを移行するにはどうすればよいですか?
-
13-09-2019 - |
質問
独自の内部投票システムを備えたDjangoアプリと、それを追跡する投票と呼ばれるモデルを作成しました。投票システムを独自のアプリにリファクタリングして、再利用できるようにしたいと思います。ただし、元のアプリは生産されているため、すべての投票を取得し、それらを別のアプリに移植するデータ移行を作成する必要があります。
両方のモデルにアクセスできるように、2つのアプリを移行に参加させるにはどうすればよいですか?残念ながら、元のアプリと別々のアプリは両方とも現在、投票という名前のモデルを持っているので、競合に注意する必要があります。
解決
やってみました DB.RENAME_TABLE?
私は、このように見える新しいアプリまたは古いアプリのいずれかで移行を作成することから始めます。
class Migration:
def forwards(self, orm):
db.rename_table('old_vote', 'new_vote')
def backwards(self, orm):
db.rename_table('new_vote', 'old_vote')
それが機能しない場合は、これらの線に沿って何かを使用して各アイテムをループで移行できます。
def forwards(self, orm):
for old in orm['old.vote'].objects.all():
# create a new.Vote with old's data
models = {
'old.vote' = { ... },
'new.vote' = { ... },
}
注:使用する必要があります orm[...]
現在移行中のアプリ外のモデルにアクセスします。それ以外の場合、標準 orm.Vote.objects.all()
表記機能。
所属していません StackOverflow