【问题标题】:Django doesn't recognize relation when I define AUTH_USER_MODEL当我定义 AUTH_USER_MODEL 时,Django 无法识别关系
【发布时间】:2019-11-30 01:53:13
【问题描述】:

我正在尝试使用 JWT 实现注销视图。我的用户继承过去是从 django.contrib.auth.models.User 继承的,但我改成 AbstractUser 认为这些问题会消失。

当我在 settings.py 中定义 AUTH_USER_MODEL = 'portal.User' 并尝试运行 ./manage.py migrate 时,我收到此错误:

django.db.utils.ProgrammingError: relation "portal_user" does not exist

settings.py

JWT_AUTH = {
    ...
    'JWT_GET_USER_SECRET_KEY': 'portal.models.jwt_get_secret_key',
}

models.py

def jwt_get_secret_key(user_model):
    return user_model.jwt_secret

class User(AbstractUser):
    USERNAME_FIELD = 'username'
    NAME_FIELD = 'name'
    EMAIL_FIELD = 'email'

    name = models.CharField(max_length=150)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    subscriptions = models.ManyToManyField(Subscription,
                                           related_name='user_subscriptions')
    jwt_secret = models.UUIDField(default=uuid.uuid4)
    ...

如果我删除 AUTH_USER_MODEL = 'portal.User',它会返回:

auth.User.groups: (fields.E304) Reverse accessor for 'User.groups' clashes with reverse accessor for 'User.groups'.
    HINT: Add or change a related_name argument to the definition for 'User.groups' or 'User.groups'.
auth.User.user_permissions: (fields.E304) Reverse accessor for 'User.user_permissions' clashes with reverse accessor for 'User.user_permissions'.
    HINT: Add or change a related_name argument to the definition for 'User.user_permissions' or 'User.user_permissions'.
portal.User.groups: (fields.E304) Reverse accessor for 'User.groups' clashes with reverse accessor for 'User.groups'.
    HINT: Add or change a related_name argument to the definition for 'User.groups' or 'User.groups'.
portal.User.user_permissions: (fields.E304) Reverse accessor for 'User.user_permissions' clashes with reverse accessor for 'User.user_permissions'.
    HINT: Add or change a related_name argument to the definition for 'User.user_permissions' or 'User.user_permissions'.

我尝试删除数据库并创建另一个数据库,但问题仍然存在。

【问题讨论】:

  • 请显示给出第一个错误的完整回溯。启动时似乎有东西在查询您的模型,但这里没有足够的信息来查看是什么。
  • 在进行任何迁移后更改 AUTH_USER_MODEL 会带来各种问题。有关更多信息,请参阅:docs.djangoproject.com/en/2.2/topics/auth/customizing/…
  • 但是如果我删除数据库和迁移并再次运行迁移呢?我试过了。

标签: django django-rest-framework django-rest-framework-jwt


【解决方案1】:

我删除了迁移文件夹。我只需要再次创建它并在其中放置一个 init.py 文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    • 2012-08-25
    相关资源
    最近更新 更多