OneToOneField(用户)是否意味着重新创建所有帐户?

时间:2017-01-05 15:28:27

标签: python django

我使用OneToOneField使用新类“Profile”扩展了用户类。它工作但现在我不能重复使用旧帐户。 (所以用户,超级用户和管理员)。我收到“RelatedObjectDoesNotExist”错误,因为我的旧帐户没有任何“配置文件”。我认为他们是另一种方式,而不是重新创建帐户(因为我无法想象它在每个新版本的生产中),但我无法弄清楚如何更新每个旧帐户。有人有任何线索吗?

1 个答案:

答案 0 :(得分:3)

在某些情况下,当您更新模型时,除了架构迁移之外,您还必须编写数据迁移 - 有关其他信息,请参阅https://docs.djangoproject.com/en/1.10/topics/migrations/#data-migrations

在您的情况下,您应该创建数据迁移以为每个现有用户创建Profile对象。按照文档中的示例 - 它非常好。

一个重要的注意事项 - 您只能在迁移中导入您的个人资料模型。你必须这样做:

Profile = apps.get_model("yourappname", "Profile")
相关问题