Django Rest Framework,用户模型出错



我的项目是一个简单的博客应用程序,用户可以在其中发布、评论和点赞帖子。我使用了Django默认的用户注册页面,后来我添加了Djoser(Django rest框架的第三方令牌认证(和自定义用户模型,这导致了崩溃,请查看这个

请注意,如果我避免使用Djoser的自定义用户,我的项目运行良好,即我可以使用令牌和会话身份验证进行注册

FORMS.PYDjango默认寄存器视图的#

from django import forms
#from django.contrib.auth.models import User
from .models import User
from django.contrib.auth.forms import UserCreationForm
class UserRegisterForm(UserCreationForm):
email = forms.EmailField()
class Meta:
model = User
fields=['username','email','phone','first_name','last_name','password1','password2']

型号.PY#Djoser自定义用户型号

from django.db import models
from django.contrib.auth.models import AbstractUser
from django.conf import settings
class User(AbstractUser):
email = models.EmailField(verbose_name='email' ,max_length=223,unique=True)
phone=models.CharField(null=True,max_length=11)
REQUIRED_FIELDS = ['username','phone','first_name','last_name']
#USERNAME_FIELD = 'email'
def get_username(self):
return self.email

错误回溯

ERRORS:
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'.
userapp.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'.
userapp.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'.

您必须在设置.py中添加AUTH_USER_MODEL。这样做将允许您的User模型在默认情况下更改为新模型。因此,将正常工作:

AUTH_USER_MODEL = 'APPNAME.MODELCLASSNAME'

在您的情况下,AppName是models.py所在的应用程序。它可能是accounts或类似的sthg:

AUTH_USER_MODEL = 'accounts.User'

看看这个关于自定义身份验证用户的漂亮文档。customize_user_django

*注意:accounts是我对你没有指定的应用程序名称的猜测,User是你在models.py 中指定的

最新更新