在django中扩展AbstractUser

时间:2015-05-01 07:58:22

标签: python django

我试图继承AbstractUser并在运行迁移时遇到错误,makemigrations说No changes detected

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

模型:

class SubClient(AbstractUser):
    client_id = models.ForeignKey(Client)
    phone = models.CharField(max_length=15)

在settings.py中添加:

AUTH_USER_MODEL = 'myadmin.SubClient'

2 个答案:

答案 0 :(得分:0)

此错误表示数据库中不存在auth_group表。这意味着您没有运行Django的迁移文件(描述数据库结构及其随时间变化的python文件)。

由于您拥有自己的模型,因此首先需要运行python manage.py makemigrations为其创建迁移文件。

然后运行python manage.py migrate来运行所有迁移(Django' s + yourrs),这将创建所有数据库表(包括auth_croup)。

阅读doc以了解有关迁移的更多信息。

答案 1 :(得分:0)

当使用AbstractUser时,我可以使用django用户内置的密码重置工作流,例如password-reset,password-reset-done等。 我要问的原因是我使用AbstractUser扩展了用户模型,但是这些内置函数无法正常工作,并且没有收到任何错误,但它将我重定向到搜索页面,并且互联网上没有关于此问题的文档:

from django.contrib.auth import views as auth_views

path('password-reset/', auth_views.PasswordResetView.as_view(template_name='accounts/password_reset.html'),
         name='password-reset'),
    path('password-reset/done/',
         auth_views.PasswordResetDoneView.as_view(template_name='accounts/password_reset_done.html'),
         name='password-reset-done'),
    path('password-reset-confirm/<uidb65>/<token>/',
         auth_views.PasswordResetConfirmView.as_view(template_name='accounts/password_reset_confirm.html'),
         name='password-reset-confirm'),
    path('password-reset-complete/s',
         auth_views.PasswordResetCompleteView.as_view(template_name='accounts/password_reset_complete.html'),
         name='password-reset-complete')