1

我改变了我以前的用户模型,现在它继承自 django 的用户模型。

from django.contrib.auth.models import User

class UserProfile(User):
 #fields..

但其他模型指向我以前的模型,现在如果我想迁移,我收到错误:

(user_id)=(9) does not exist in auth_user table. 

合理的错误信息。但是我现在该怎么办?我真的被困住了。我正在使用django 1.4 版

我做了错误的截图:

在此处输入图像描述

4

1 回答 1

1

你没有说你使用的是什么版本的 Django;如果您使用的是 1.5,那么您还需要设置AUTH_USER_MODEL设置以告诉 Django 使用它(有关更多信息,请参阅auth 文档)。如果您使用的是早期版本,您可能根本不想子类化 User 模型,而是创建一个配置文件(如您的类名所示)作为单独的模型并将其与 ForeignKey 链接(请参阅旧的配置文件文档有关更多信息)。

添加父类的时候是不是也改了模型的名字?您可能希望在 UserProfile 中设置表的名称,使其与旧名称匹配。来自Django 模型文档

为了节省您的时间,Django 自动从模型类的名称和包含它的应用程序中派生数据库表的名称。模型的数据库表名是通过将模型的“应用标签”(您在 manage.py startapp 中使用的名称)与模型的类名连接起来而构建的,它们之间使用下划线。

例如,如果你有一个应用书店(由 manage.py startapp bookstore 创建),定义为类 Book 的模型将有一个名为 bookstore_book 的数据库表。

要覆盖数据库表名,请使用 Meta 类中的 db_table 参数。

所以这样的事情可以解决问题:

class UserProfile(User):
    # other stuff
    class Meta:
        db_table = "myapp_user"

希望这可以帮助!

于 2013-07-31T22:53:41.340 回答