@@ -149,6 +149,14 @@ class Meta:
149
149
unique_together = ('race_name' , 'position' )
150
150
151
151
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
+
152
160
class NullUniquenessTogetherModel (models .Model ):
153
161
"""
154
162
Used to ensure that null values are not included when checking
@@ -176,6 +184,12 @@ class Meta:
176
184
fields = '__all__'
177
185
178
186
187
+ class BlankUniquenessTogetherSerializer (serializers .ModelSerializer ):
188
+ class Meta :
189
+ model = BlankUniquenessTogetherModel
190
+ fields = '__all__'
191
+
192
+
179
193
class NullUniquenessTogetherSerializer (serializers .ModelSerializer ):
180
194
class Meta :
181
195
model = NullUniquenessTogetherModel
@@ -461,6 +475,34 @@ def test_do_not_ignore_validation_for_null_fields(self):
461
475
serializer = NullUniquenessTogetherSerializer (data = data )
462
476
assert not serializer .is_valid ()
463
477
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
+
464
506
def test_ignore_validation_for_unchanged_fields (self ):
465
507
"""
466
508
If all fields in the unique together constraint are unchanged,
0 commit comments