【问题标题】:part a custom user model into two apps, but custom user model app override the 2nd app将自定义用户模型分成两个应用程序,但自定义用户模型应用程序会覆盖第二个应用程序
【发布时间】:2022-10-19 13:03:54
【问题描述】:

我已经搜索了很多与我的问题相关的内容,但从未找到我需要的内容

我正在尝试创建一个简单的 Django 博客,该博客具有自定义用户模型继承名为 user 的应用程序中的核心身份验证 AbstractUser 类

用户模型.py

class User(AbstractUser):
   email = models.EmailField('email_address', unique=True)
   USERNAME_FIELD = 'email'

另一个帐户应用程序已与已验证用户的登录名和个人资料分开

account.models.py

class Profile(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL, related_name='profile_user', on_delete=models.CASCADE)

上面的 settings.AUTH_USER_MODEL 是已经从用户应用 user.models import User 导入并且已经在 settings.py 中识别的同一个用户

当我开始进行迁移和迁移时,我没有发现任何问题,但是当我去我的 PostgreSQL pgAdmin 查看数据库表时,我找到了除 account_profile 表之外的所有表,尽管帐户中有另一个类,但我找到了它的表但没有配置文件,因为它从来没有创建

此外,当我尝试创建超级用户时,我得到了相同的符号:

psycopg2.errors.UndefinedTable:关系“account_profile”不存在

LINE 1: INSERT INTO "account_profile" ("user_id", "city_id", "phone...

我应该将 Profile 类放在 user.models.py 中的 account.models.py 中还是我应该怎么做,请帮忙 很抱歉很长时间

No account_profile

【问题讨论】:

  • 我已将 Profile 类放入 user.models.py 以查看是否会有任何更改,但即使在用户应用程序中同时使用 User 和 Profile 类,也会出现同样的问题

标签: python django


【解决方案1】:

如果有人遇到过类似的情况,解决方案是我将用户应用程序放在已安装的应用程序 auth 和 admin 之前,这真的很棘手,因为您必须将任何应用程序放在这两者之下,而且您可能已经建立了一个信号将被发送到帐户应用程序以在用户应用程序中为用户创建配置文件,但只要您刚刚使用 AbstractUser 作为 auth.user 的扩展,它就已经存在,因此无需创建任何信号来创建配置文件再次。

【讨论】:

    猜你喜欢
    • 2018-10-27
    • 2013-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-26
    • 1970-01-01
    • 2023-01-16
    • 2021-07-22
    相关资源
    最近更新 更多