From d60b909f7a4d5ade58a100e17bdb1e2c1aa9ac70 Mon Sep 17 00:00:00 2001 From: Lucas Berg <55436804+BergLucas@users.noreply.github.com> Date: Wed, 23 Aug 2023 14:39:28 +0200 Subject: [PATCH] Add test case for source with attributes in extra_kwargs --- tests/test_model_serializer.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/tests/test_model_serializer.py b/tests/test_model_serializer.py index eac51ae70..f7a0e3a69 100644 --- a/tests/test_model_serializer.py +++ b/tests/test_model_serializer.py @@ -726,6 +726,27 @@ class TestRelationalFieldMappings(TestCase): """) self.assertEqual(repr(TestSerializer()), expected) + def test_source_with_attributes(self): + class TestSerializer(serializers.ModelSerializer): + class Meta: + model = RelationalModel + fields = ('foreign_key_name', 'one_to_one_name') + extra_kwargs = { + 'foreign_key_name': { + 'source': 'foreign_key.name', + }, + 'one_to_one_name': { + 'source': 'one_to_one.name', + } + } + + expected = dedent(""" + TestSerializer(): + foreign_key_name = CharField(max_length=100, source='foreign_key.name') + one_to_one_name = CharField(max_length=100, source='one_to_one.name') + """) + self.assertEqual(repr(TestSerializer()), expected) + class DisplayValueTargetModel(models.Model): name = models.CharField(max_length=100)