Fix #3844, refine validator for fields with <source=> kwargs

This commit is contained in:
Xiao Hanyu 2016-01-20 11:28:18 +08:00
parent e7fbd264ca
commit a5cead5060

View File

@ -35,7 +35,7 @@ class UniqueValidator(object):
"""
# Determine the underlying model field name. This may not be the
# same as the serializer field name if `source=<>` is set.
self.field_name = serializer_field.source_attrs[0]
self.field_name = serializer_field.source_attrs[-1]
# Determine the existing instance, if this is an update operation.
self.instance = getattr(serializer_field.parent, 'instance', None)
@ -174,8 +174,8 @@ class BaseUniqueForValidator(object):
"""
# Determine the underlying model field names. These may not be the
# same as the serializer field names if `source=<>` is set.
self.field_name = serializer.fields[self.field].source_attrs[0]
self.date_field_name = serializer.fields[self.date_field].source_attrs[0]
self.field_name = serializer.fields[self.field].source_attrs[-1]
self.date_field_name = serializer.fields[self.date_field].source_attrs[-1]
# Determine the existing instance, if this is an update operation.
self.instance = getattr(serializer, 'instance', None)