@@ -149,6 +149,14 @@ class Meta:
149149 unique_together = ('race_name' , 'position' )
150150
151151
152+ class BlankUniquenessTogetherModel (models .Model ):
153+ race_name = models .CharField (max_length = 100 , blank = True )
154+ position = models .IntegerField ()
155+
156+ class Meta :
157+ unique_together = ('race_name' , 'position' )
158+
159+
152160class NullUniquenessTogetherModel (models .Model ):
153161 """
154162 Used to ensure that null values are not included when checking
@@ -176,6 +184,12 @@ class Meta:
176184 fields = '__all__'
177185
178186
187+ class BlankUniquenessTogetherSerializer (serializers .ModelSerializer ):
188+ class Meta :
189+ model = BlankUniquenessTogetherModel
190+ fields = '__all__'
191+
192+
179193class NullUniquenessTogetherSerializer (serializers .ModelSerializer ):
180194 class Meta :
181195 model = NullUniquenessTogetherModel
@@ -461,6 +475,34 @@ def test_do_not_ignore_validation_for_null_fields(self):
461475 serializer = NullUniquenessTogetherSerializer (data = data )
462476 assert not serializer .is_valid ()
463477
478+ def test_validation_for_provided_blank_fields (self ):
479+ BlankUniquenessTogetherModel .objects .create (
480+ position = 1
481+ )
482+ data = {
483+ 'race_name' : '' ,
484+ 'position' : 1
485+ }
486+ serializer = BlankUniquenessTogetherSerializer (data = data )
487+ assert not serializer .is_valid ()
488+
489+ def test_validation_for_missing_blank_fields (self ):
490+ BlankUniquenessTogetherModel .objects .create (
491+ position = 1
492+ )
493+ data = {
494+ 'position' : 1
495+ }
496+ serializer = BlankUniquenessTogetherSerializer (data = data )
497+ assert not serializer .is_valid ()
498+
499+ def test_ignore_validation_for_missing_blank_fields (self ):
500+ data = {
501+ 'position' : 1
502+ }
503+ serializer = BlankUniquenessTogetherSerializer (data = data )
504+ assert serializer .is_valid (), serializer .errors
505+
464506 def test_ignore_validation_for_unchanged_fields (self ):
465507 """
466508 If all fields in the unique together constraint are unchanged,
0 commit comments