1
South를 사용하여 sqlite3 데이터 마이그레이션을 수행하고 있습니다. 내 오랜 스키마는 사용자 프로필에 대해 다음 모델이 있습니다OneToOne 키를 사용하여 South 데이터 마이그레이션
class UserProfile(models.Model):
user = models.OneToOneField(User)
weekOne = models.OneToOneField(WeekOne)
weekTwo = models.OneToOneField(WeekTwo)
weekThree = models.OneToOneField(WeekThree)
을하지만 감각 즉, weekFour, weekFive, weekSix 등 매주 자체가 일반적인 주에서 상속하는 모델 새로운 주의 번호를 추가 한 모델. 그래서 주 모델의 기본 프로토 타입은 다음과 같습니다
class WeekOne(Week):
name = u'Week One'
exercises = ['squats', 'lunges', 'stairDaysCount', 'skipStairs']
# Required benchmarks for given exercises
squatBenchmark = 1000
lungeBenchmark = 250
stairDaysCountBenchmark = 3
totalGoals = 4
내 질문에, 나는 내 datamigration 코드에 두어야 코드의 어떤 종류가 추가 주와 함께 오래 UserProfile
의를 채울 수 있도록합니다. 나는 다음과 같은 것을 염두에 뒀다 :
def forwards(self, orm):
for user in orm.UserProfile.objects.all():
user.weekFour = orm.WeekFour()
user.weekFive = orm.weekFive()
# etc.
그러나 그것은 효과가없는 것처럼 보인다.
Migration 'my_app:0002_newWeeks' is marked for no-dry-run
그리고 나중에는 :
이DatabaseError: no such column: my_app_userprofile.weekFour_id
를이 실행 내가 스키마 마이그레이션을 실행하려고 할 때이 오류가 내 앱이 이미 새 모델이없는 모델을 만든 경우에는 작동하지 않습니다. 열쇠. 즉, 나는 주로서 1-3 주를 가진 사용자를 키로 만들었고, 그 키들과 그 사용자들과 함께 많은 것을하고, 4-9 주를 더했습니다. 모든 새로운 사용자는 모든 주를 가지지 만 오래된 사용자는 4-9 주가 지나면 null이되며 키는 NOT NULL 키이므로 오류가 발생합니다. – user1427661
오류를 발생시키지 않도록 기본값을 정의 할 수 있습니다. – catherine