在开始处理新功能之前,我有这个模型:
class AppUser(models.Model):
user = models.OneToOneField(User, primary_key=True) #Django standard user
# And various standard data that we don't need here
现在我需要扩展我的数据库以存储有关我在Django中的用户的更多信息,并且我来了accros django-annoying以建立这样的关系:
class TutorialProgression(models.Model):
has_seen_home_tutorial = models.BooleanField(default=False)
has_seen_revision_tutorial = models.BooleanField(default=False)
has_seen_lists_tutorial = models.BooleanField(default=False)
class AppUser(models.Model):
user= models.OneToOneField(User, primary_key=True) #Django standard user
# Various standard data
tutorial_progression = AutoOneToOneField(TutorialProgression)
它在这里做的是,当创建一个新的AppUser
时,一个全新的TutorialProgression也是如此。但我对现有条目有疑问。我尝试使用这些修改来迁移我的postgres数据库,它要求我提供一次性默认值或在我的模型中添加默认值。
我理解这一点,但我该如何继续为每个现有AppUser
提供唯一的TutorialProgression
?
答案 0 :(得分:1)
您需要分三个阶段完成此操作。首先,使用null=True
添加一对一并创建迁移。然后,创建数据迁移以遍历所有现有的AppUsers并为其创建TutorialProgressions。最后,删除null = True并创建最终迁移。