@@ -516,6 +516,43 @@ 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_method_field (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
+ def test_uniq_together_validation_uses_model_fields_with_source_field (self ):
539
+ class TestSerializer (serializers .ModelSerializer ):
540
+ pos = serializers .IntegerField (source = 'position' )
541
+
542
+ class Meta :
543
+ model = NullUniquenessTogetherModel
544
+ fields = ['race_name' , 'pos' ]
545
+
546
+ serializer = TestSerializer ()
547
+ expected = dedent ("""
548
+ TestSerializer():
549
+ race_name = CharField(max_length=100, required=True)
550
+ pos = IntegerField(source='position')
551
+ class Meta:
552
+ validators = [<UniqueTogetherValidator(queryset=NullUniquenessTogetherModel.objects.all(), fields=('race_name', 'pos'))>]
553
+ """ )
554
+ assert repr (serializer ) == expected
555
+
519
556
520
557
class UniqueConstraintModel (models .Model ):
521
558
race_name = models .CharField (max_length = 100 )
0 commit comments