@@ -41,7 +41,6 @@ class UniqueValidator:
4141
4242 def __init__ (self , queryset , message = None , lookup = 'exact' ):
4343 self .queryset = queryset
44- self .serializer_field = None
4544 self .message = message or self .message
4645 self .lookup = lookup
4746
@@ -94,15 +93,14 @@ class UniqueTogetherValidator:
9493 def __init__ (self , queryset , fields , message = None ):
9594 self .queryset = queryset
9695 self .fields = fields
97- self .serializer_field = None
9896 self .message = message or self .message
9997
100- def enforce_required_fields (self , attrs , instance ):
98+ def enforce_required_fields (self , attrs , serializer ):
10199 """
102100 The `UniqueTogetherValidator` always forces an implied 'required'
103101 state on the fields it applies to.
104102 """
105- if instance is not None :
103+ if serializer . instance is not None :
106104 return
107105
108106 missing_items = {
@@ -113,16 +111,16 @@ def enforce_required_fields(self, attrs, instance):
113111 if missing_items :
114112 raise ValidationError (missing_items , code = 'required' )
115113
116- def filter_queryset (self , attrs , queryset , instance ):
114+ def filter_queryset (self , attrs , queryset , serializer ):
117115 """
118116 Filter the queryset to all instances matching the given attributes.
119117 """
120118 # If this is an update, then any unprovided field should
121119 # have it's value set based on the existing instance attribute.
122- if instance is not None :
120+ if serializer . instance is not None :
123121 for field_name in self .fields :
124122 if field_name not in attrs :
125- attrs [field_name ] = getattr (instance , field_name )
123+ attrs [field_name ] = getattr (serializer . instance , field_name )
126124
127125 # Determine the filter keyword arguments and filter the queryset.
128126 filter_kwargs = {
@@ -141,13 +139,10 @@ def exclude_current_instance(self, attrs, queryset, instance):
141139 return queryset
142140
143141 def __call__ (self , attrs , serializer ):
144- # Determine the existing instance, if this is an update operation.
145- instance = getattr (serializer , 'instance' , None )
146-
147- self .enforce_required_fields (attrs , instance )
142+ self .enforce_required_fields (attrs , serializer )
148143 queryset = self .queryset
149- queryset = self .filter_queryset (attrs , queryset , instance )
150- queryset = self .exclude_current_instance (attrs , queryset , instance )
144+ queryset = self .filter_queryset (attrs , queryset , serializer )
145+ queryset = self .exclude_current_instance (attrs , queryset , serializer . instance )
151146
152147 # Ignore validation if any field is None
153148 checked_values = [
@@ -207,13 +202,11 @@ def __call__(self, attrs, serializer):
207202 # same as the serializer field names if `source=<>` is set.
208203 field_name = serializer .fields [self .field ].source_attrs [- 1 ]
209204 date_field_name = serializer .fields [self .date_field ].source_attrs [- 1 ]
210- # Determine the existing instance, if this is an update operation.
211- instance = getattr (serializer , 'instance' , None )
212205
213206 self .enforce_required_fields (attrs )
214207 queryset = self .queryset
215208 queryset = self .filter_queryset (attrs , queryset , field_name , date_field_name )
216- queryset = self .exclude_current_instance (attrs , queryset , instance )
209+ queryset = self .exclude_current_instance (attrs , queryset , serializer . instance )
217210 if qs_exists (queryset ):
218211 message = self .message .format (date_field = self .date_field )
219212 raise ValidationError ({
0 commit comments