@@ -516,6 +516,44 @@ def filter(self, **kwargs):
516
516
validator .filter_queryset (attrs = data , queryset = queryset , serializer = serializer )
517
517
assert queryset .called_with == {'race_name' : 'bar' , 'position' : 1 }
518
518
519
+ def test_uniq_together_validation_uses_model_fields (self ):
520
+ class TestSerializer (serializers .ModelSerializer ):
521
+ position = serializers .SerializerMethodField ()
522
+
523
+ def get_position (self , obj ):
524
+ return obj .position or 0
525
+
526
+ class Meta :
527
+ model = NullUniquenessTogetherModel
528
+ fields = ['race_name' , 'position' ]
529
+
530
+ serializer = TestSerializer ()
531
+ expected = dedent ("""
532
+ TestSerializer():
533
+ race_name = CharField(max_length=100)
534
+ position = SerializerMethodField()
535
+ """ )
536
+ assert repr (serializer ) == expected
537
+
538
+ class Test2Serializer (serializers .ModelSerializer ):
539
+ pos = serializers .IntegerField (source = 'position' )
540
+
541
+ class Meta :
542
+ model = NullUniquenessTogetherModel
543
+ fields = ['race_name' , 'pos' ]
544
+
545
+ serializer = Test2Serializer ()
546
+ expected = dedent ("""
547
+ Test2Serializer():
548
+ race_name = CharField(max_length=100, required=True)
549
+ pos = IntegerField(source='position')
550
+ class Meta:
551
+ validators = [<UniqueTogetherValidator(queryset=NullUniquenessTogetherModel.objects.all(), fields=('race_name', 'pos'))>]
552
+ """ )
553
+ assert repr (serializer ) == expected
554
+
555
+
556
+
519
557
520
558
class UniqueConstraintModel (models .Model ):
521
559
race_name = models .CharField (max_length = 100 )
0 commit comments