Пользовательской регистрации django-rest-auth не удалось сохранить дополнительные поля даже после изменения метода save()

Я пытаюсь объединить регистрацию пользователя и вход в систему с настраиваемыми полями. Я использую django-rest-auth. Я добавил свои дополнительные поля в свою модель, а затем в ModelSerializer я унаследовал rest_auth.registration.serializers.RegisterSerializer Хотя процесс регистрации успешен, но мои настраиваемые поля не сохраняются.

models.py

from django.db import models
from phonenumber_field.modelfields import PhoneNumberField

class Vendor(models.Model):

    LOGIN_TYPE = (
        ('1', 'MY_FORM'),
        ('2', 'FACEBOOK'),
        ('3', 'GOOGLE'),)
    STATUS = (
        ('0', 'SIGNED_UP'),
        ('1', 'OTP_VERIFIED'),
        ('2', 'ACTIVATED'),)

    DEVICE_TYPE_CHOICES = (
        ('1', 'ANDROID'),
        ('2', 'IOS'),)

    phone = PhoneNumberField(unique=True)

    device_token = models.CharField(max_length=250)
    device_type = models.CharField(max_length=1, choices=DEVICE_TYPE_CHOICES)
    login_type = models.CharField(max_length=1, choices=LOGIN_TYPE)
    status = models.CharField(max_length=1, choices=STATUS)
    created_on = models.DateTimeField(auto_now_add=True)

Serializers.py

from rest_auth.registration.serializers import RegisterSerializer

from rest_framework import serializers
from allauth.account.adapter import get_adapter
from allauth.account.utils import setup_user_email
from .models import Vendor



class VendorRegisterSerializer(serializers.ModelSerializer, RegisterSerializer):

    class Meta:
        model = Vendor
        exclude = ('username',)

    def get_cleaned_data(self):
        return {

            'password1': self.validated_data.get('password1', ''),
            'email': self.validated_data.get('email', ''),
            'phone': self.validated_data.get('phone', ''),
            'device_token': self.validated_data.get('device_token', ''),
            'login_type': self.validated_data.get('login_type', ''),
            'device_type': self.validated_data.get('device_type', ''),
            'status': self.validated_data.get('status', '')
        }

    def save(self, request):
        adapter = get_adapter()
        user = adapter.new_user(request)
        self.cleaned_data = self.get_cleaned_data()
        adapter.save_user(request, user, self)
        setup_user_email(request, user, [])

        user.phone = self.cleaned_data.get('phone')
        user.device_token = self.cleaned_data.get('device_token')
        user.login_type = self.cleaned_data.get('login_type')
        user.device_token = self.cleaned_data.get('device_token')
        user.device_type = self.cleaned_data.get('device_type')
        user.status = self.cleaned_data.get('status')


        user.save()
        print(user.phone)
        return user

0 ответов

Другие вопросы по тегам