Пользовательской регистрации 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