我试图继承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'
答案 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')