django Rest Framework - 扩展用户模型 个人资料模型

问题描述

晕,我在使用 django-restframework 通过 OnetoOnfield 扩展用户模型时遇到问题,下面是我的代码错误消息,我收到 TypeError:_create_user() 得到了一个意外的关键字参数“school_name” shool 当我尝试创建用户

###profile-serializer

class schoolProfileSerializer(serializers.ModelSerializer):
  id = serializers.IntegerField(source='pk',read_only=True)
  parser_classes = (MultiPartParser,FormParser,)
  email = serializers.CharField(source='user.email',read_only=True)
  username = serializers.CharField(source='user.username',read_only=True)
  badge = Base64Imagefield(max_length=None,use_url=True)
  date_established = serializers.DateField(format=None,input_formats=None)
  

  class Meta:
    model = Profile
    fields = ( 'email','id','username','school_name','address','badge','gender','level','motto')


  def create(self,validated_data):
    if 'profile' in validated_data:
      user_data = validated_data.pop('profile')
    user = CustomUser.objects._create_user(**validated_data)
    Profile.objects.update_or_create(user=user,**validated_data)
    return user

###profile-view

class CreateProfileView(generics.CreateAPIView):
  parser_classes = (MultiPartParser,)
  serializer_class = schoolProfileSerializer
  queryset = Profile.objects.all()
  permission_classes = [permissions.AllowAny]

个人资料模型

class Profile(models.Model):
  user = models.OnetoOneField(CustomUser,on_delete=models.CASCADE)
  school_name = models.CharField(max_length=255)
  address = models.TextField()
  school_phone_number = models.CharField(max_length=25)
  school_email = models.EmailField()
  motto = models.CharField(max_length=255)


@receiver(post_save,sender=CustomUser)
def create_school_profile(sender,instance=None,created=False,**kwargs):
  if created:
    Profile.objects.get_or_create(user=instance)

errorr-msg

Traceback (most recent call last):
  File "/home/olaneat/Desktop/myFiles/project/django/api/lib/python3.8/site-packages/django/core/handlers/exception.py",line 47,in inner
    response = get_response(request)
  File "/home/olaneat/Desktop/myFiles/project/django/api/lib/python3.8/site-packages/django/core/handlers/base.py",line 179,in _get_response
    response = wrapped_callback(request,*callback_args,**callback_kwargs)
  File "/home/olaneat/Desktop/myFiles/project/django/api/lib/python3.8/site-packages/django/views/decorators/csrf.py",line 54,in wrapped_view
    return view_func(*args,**kwargs)
  File "/home/olaneat/Desktop/myFiles/project/django/api/lib/python3.8/site-packages/django/views/generic/base.py",line 70,in view
    return self.dispatch(request,*args,**kwargs)
  File "/home/olaneat/Desktop/myFiles/project/django/api/lib/python3.8/site-packages/rest_framework/views.py",line 509,in dispatch
    response = self.handle_exception(exc)
  File "/home/olaneat/Desktop/myFiles/project/django/api/lib/python3.8/site-packages/rest_framework/views.py",line 469,in handle_exception
    self.raise_uncaught_exception(exc)
  File "/home/olaneat/Desktop/myFiles/project/django/api/lib/python3.8/site-packages/rest_framework/views.py",line 480,in raise_uncaught_exception
    raise exc
  File "/home/olaneat/Desktop/myFiles/project/django/api/lib/python3.8/site-packages/rest_framework/views.py",line 506,in dispatch
    response = handler(request,**kwargs)
  File "/home/olaneat/Desktop/myFiles/project/django/api/lib/python3.8/site-packages/rest_framework/generics.py",line 190,in post
    return self.create(request,**kwargs)
  File "/home/olaneat/Desktop/myFiles/project/django/api/lib/python3.8/site-packages/rest_framework/mixins.py",line 19,in create
    self.perform_create(serializer)
  File "/home/olaneat/Desktop/myFiles/project/django/api/lib/python3.8/site-packages/rest_framework/mixins.py",line 24,in perform_create
    serializer.save()
  File "/home/olaneat/Desktop/myFiles/project/django/api/lib/python3.8/site-packages/rest_framework/serializers.py",line 205,in save
    self.instance = self.create(validated_data)
  File "/home/olaneat/Desktop/myFiles/project/django/api/schMartket/schProfile/serializers.py",line 60,in create
    user = CustomUser.objects._create_user(**validated_data)
TypeError: _create_user() got an unexpected keyword argument 'school_name'
[25/Mar/2021 13:29:50] "POST /school-profile/create HTTP/1.1" 500 124756

kinda confused but what am i doing wrongly can anyone help out

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)