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

标签 python django

我使用 OneToOneField 使用新类“Profile”扩展了用户类。它有效,但现在我无法重复使用旧帐户。 (所以用户、 super 用户和管理员)。我收到“RelatedObjectDoesNotExist”错误,因为我的旧帐户没有任何“个人资料”。我想他们是重新创建帐户之外的另一种方式(因为我无法想象它在每个新版本的生产中),但我不知道如何更新每个旧帐户。有人有任何线索吗?

最佳答案

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

在您的情况下,您应该创建数据迁移来为每个现有用户创建配置文件对象。按照文档中的示例进行操作 - 非常好。

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

Profile = apps.get_model("yourappname", "Profile")

关于python - OneToOneField(user) 是否意味着重新创建所有帐户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41488733/

相关文章:

python - 从数据集中删除异常值

python - 像字典一样索引 NumPy 数组

django - 为什么 request.POST 对象是不可变的?

python - 在 Django REST Framework 中公开 MoneyFields?

django - 两个独立的 Django 应用程序需要相同的模型

django nginx Gunicorn,, 启动 : Job failed to start

javascript - 如何摆脱 Python json.dumps 中的 'quot'

python - 使用 Google Apps api 的模拟进行单元测试 - 管理目录 API

python - 绘制和保存大量图形时如何加速 matplotlib?

python - 使用列表值作为后续键访问字典值