Вы можете использовать дженерики ListCreateAPIView
, и вам не нужно писать и получать и отправлять сами.
Сериализатор должен обрабатывать все создание пользователя.
Не ясно, является ли Student
вашей пользовательской моделью пользователя или нет. Я предполагаю, что это так.
Итак, ваше мнение:
class StudentSignUpView( generics.ListCreateAPIView ):
"""This part is relatng to sign up students a"""
queryset = Student.objects.all()
serializer_class = StudentSignUpSerializer
Ваш сериализатор:
class StudentSignUpSerializer(serializers.ModelSerializer):
class Meta:
model = Student
fields = ("username", "password")
def create(self, validated_data):
user = Student.objects.create_user(username=validated_data["username"],
password=validated_data["password"])
return user
Вы можете использовать свою пользовательскую модель в сериализаторе, и если вы унаследовали от AbstractUser от django, вы можете использовать метод create_user
для создания пользователя, а также он делает некоторые магические вещи (посмотрите реализацию).
Если вам нужно сделать что-то еще, как вы упомянули, с некоторым профилем студента, вы можете сделать это в сериализаторе после создания пользователя (возможно, в виде одной атомарной транзакции).