From aa500b350672389a57d3a87bb7ddb74e016cdea7 Mon Sep 17 00:00:00 2001 From: anvesh agarwal Date: Thu, 24 Oct 2019 16:20:54 +0530 Subject: [PATCH] 1.Revoked the previous change fixed the uniquetogether validator --- rest_framework/serializers.py | 5 +---- rest_framework/validators.py | 7 ++++++- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index 473a770aa..f5d9a5065 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -448,10 +448,7 @@ class Serializer(BaseSerializer, metaclass=SerializerMetaclass): default = field.get_default() except SkipField: continue - if field.source == None: - defaults[field.field_name] = default - else: - defaults[field.source] = default + defaults[field.field_name] = default return defaults diff --git a/rest_framework/validators.py b/rest_framework/validators.py index 1cbe31b5e..5e6fafbbb 100644 --- a/rest_framework/validators.py +++ b/rest_framework/validators.py @@ -107,6 +107,7 @@ class UniqueTogetherValidator: """ # Determine the existing instance, if this is an update operation. self.instance = getattr(serializer, 'instance', None) + self.serializer = serializer def enforce_required_fields(self, attrs): """ @@ -137,7 +138,11 @@ class UniqueTogetherValidator: # Determine the filter keyword arguments and filter the queryset. filter_kwargs = { - field_name: attrs[field_name] + ( + field_name + if field_name == self.serializer.fields[field_name].source + else self.serializer.fields[field_name].source + ): attrs[field_name] for field_name in self.fields } return qs_filter(queryset, **filter_kwargs)