Viewset 'create' custom destination value in Django Rest Framework

I would like to set the CustomUser username using the input email address, but where to make the user assignment? At the same time, he receives the file.

Models.py

class CustomUser(AbstractUser): avatar = models.ImageField(max_length=None, upload_to='avatar', blank=True) 

Serializers.py

 class CustomUserSerializer(serializers.ModelSerializer): class Meta: model = CustomUser fields = ('id', 'first_name', 'last_name', 'email', 'password', 'avatar', 'groups') 

Views.py

 class CustomUserViewSet(viewsets.ModelViewSet): queryset = CustomUser.objects.all() serializer_class = CustomUserSerializer 

thank you in advance.

+4
source share
1 answer

What @Anzel would say, but if you want to do this in the django-rest-framework , you can override the create method of your CustomUserSerializer . How:

 class CustomUserSerializer(serializers.ModelSerializer): groups = serializers.PrimaryKeyRelatedField(many=True, read_only=True) def create(self, validated_data): user = CustomUser.objects.create_user( username =validated_data['email'], # HERE email =validated_data['email'], password =validated_data['password'], first_name =validated_data['first_name'], last_name =validated_data['last_name'], avatar =validated_data['avatar'], ) user.groups = validated_data['groups'] return user class Meta: model = CustomUser fields = ( 'id', 'first_name', 'last_name', 'email', 'password', 'avatar', 'groups' ) 
+3
source

Source: https://habr.com/ru/post/985513/


All Articles