при регистрации поле email необязательным Django RF
В serializers.py
from rest_framework import serializers
from django.contrib.auth.models import User
from django.contrib.auth.mixins import PermissionRequiredMixin
class UserRegisterSerializer(serializers.ModelSerializer, PermissionRequiredMixin):
password2 = serializers.CharField() # Поле для повторения пароля
email = serializers.EmailField(allow_blank=True)
# Настройка полей
class Meta:
model = User
fields = ['email', 'username', 'password', 'password2', 'is_staff']
# Метод для сохранения нового пользователя
def create(self, *args, **kwargs):
user = User(
email=self.validated_data['email'],
username=self.validated_data['username'],
is_staff=self.validated_data['is_staff'],
)
password = self.validated_data['password']
password2 = self.validated_data['password2']
if password != password2:
raise serializers.ValidationError({password: "Пароль не совпадает"})
user.set_password(password) # Сохраняем пароль
user.save()
return user
Во views.py
class RegisterUserView(CreateAPIView, PermissionRequiredMixin):
queryset = User.objects.all() # add to queryset
serializer_class = UserRegisterSerializer # add serializer UserRegisterSerializer
permission_classes = [IsAuthenticated] # add permission classes
def post(self, request, *args, **kwargs): #create method to create new user
serializer = UserRegisterSerializer(data=request.data) # add UserRegisterSerializer
data = {} # create list data
# Data Validity Check
if serializer.is_valid():
serializer.save()
data['response'] = True
return Response(data, status=status.HTTP_200_OK)
else:
data = serializer.errors
return Response(data)
class UserFieldObject(generics.ListCreateAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
def user_list(self, request):
queryset = self.get_queryset()
serializer = UserSerializer(queryset, many=True)
return Response(serializer.data)
class UsersDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
Можете подсказать как сделать чтобы заполнение поля email при регистрации было необязательным.
email = serializers.EmailField(allow_blank=True)
Я вроде прописала что allow_blank True все равно не помогает выходит ошибка
{"email":["This field may not be null."]}