Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class UsersSerializer(serializers.ModelSerializer):
- password = serializers.CharField(write_only=True)
- gender = serializers.SerializerMethodField()
- date_of_birthday = serializers.SerializerMethodField()
- class Meta:
- model = User
- fields = ('id', 'phone', 'first_name', 'last_name', 'is_active',
- 'avatar', 'password', 'gender', 'date_of_birthday', )
- write_only_fields = ('password', )
- read_only_fields = ('is_staff', 'is_active', 'date_joined', )
- def get_gender(self, obj):
- try:
- gender = obj.client.get().gender or None
- except Client.DoesNotExist:
- return None
- return gender
- def get_date_of_birthday(self, obj):
- try:
- date_of_birthday = obj.client.get().date_of_birthday or None
- except Client.DoesNotExist:
- return None
- return date_of_birthday
- def create(self, validated_data):
- user = super(UsersSerializer, self).create(validated_data)
- user.set_password(validated_data['password'])
- user.save()
- return user
- def update(self, instance, validated_data):
- gender = self.context.get('request').data.get('gender', None)
- date_of_birthday = self.context.get('request').data.get('date_of_birthday', None)
- if gender or date_of_birthday:
- kwargs = {}
- if gender:
- kwargs.update({
- 'gender': gender
- })
- if date_of_birthday:
- date_of_birthday = datetime.strptime(date_of_birthday, "%Y-%m-%d")
- kwargs.update({
- 'date_of_birthday': date_of_birthday.date()
- })
- kwargs.update({
- 'user': instance
- })
- client, created = Client.objects.get_or_create(user=instance)
- client.date_of_birthday = kwargs.get('date_of_birthday', None)
- client.gender = kwargs.get('gender', None)
- client.save()
- instance.save()
- return instance
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement