Django Rest框架扩展用户模型

2024-10-01 07:19:08 发布

您现在位置:Python中文网/ 问答频道 /正文

halo我在使用django restframework使用OneToOnfield扩展用户模型时遇到问题,下面是我的代码和错误消息,我收到一个TypeError:_create_user()得到一个意外的关键字参数'school_name' 当我尝试创建用户时,请选择shool

####配置文件序列化程序

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

####纵断面图

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)

错误消息

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, *args, **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, *args, **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

Tags: djangoinpyprojectapihomelibcreate