@@ -516,6 +516,44 @@ def filter(self, **kwargs):
516516 validator .filter_queryset (attrs = data , queryset = queryset , serializer = serializer )
517517 assert queryset .called_with == {'race_name' : 'bar' , 'position' : 1 }
518518
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+
519557
520558class UniqueConstraintModel (models .Model ):
521559 race_name = models .CharField (max_length = 100 )
0 commit comments