Django의 South를 사용하여 한 모델에서 다른 모델로 데이터를 마이그레이션하려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/1857810

문제

자체 내부 투표 시스템이있는 Django 앱과 Track Track이라는 Vote라는 모델을 만들었습니다. 투표 시스템을 자체 앱으로 리팩터링하여 재사용 할 수 있습니다. 그러나 원래 앱은 제작 중이며 모든 투표를 취하고 별도의 앱으로 이식 할 수있는 데이터 마이그레이션을 만들어야합니다.

두 모델 모두에 액세스 할 수 있도록 두 개의 앱을 마이그레이션에 참여하도록하려면 어떻게해야합니까? 불행히도, 원래와 별도의 앱에는 모두 투표라는 모델이 있으므로 충돌을 알고 있어야합니다.

도움이 되었습니까?

해결책

당신은 시도 했습니까? 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() 표기법이 작동합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top