diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index e27610178..5ee6cd888 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -1236,7 +1236,11 @@ class ModelSerializer(Serializer): Create a read only field for model methods and properties. """ field_class = ReadOnlyField - field_kwargs = {} + func = getattr(model_class, field_name) + if func.__doc__: + field_kwargs = {'help_text': func.__doc__} + else: + field_kwargs = {} return field_class, field_kwargs diff --git a/tests/test_model_serializer.py b/tests/test_model_serializer.py index 4aa0fa35e..044a96d96 100644 --- a/tests/test_model_serializer.py +++ b/tests/test_model_serializer.py @@ -71,6 +71,10 @@ class RegularFieldsModel(models.Model): def method(self): return 'method' + def docstring_method(self): + """test""" + return 'method' + COLOR_CHOICES = (('red', 'Red'), ('blue', 'Blue'), ('green', 'Green')) DECIMAL_CHOICES = (('low', decimal.Decimal('0.1')), ('medium', decimal.Decimal('0.5')), ('high', decimal.Decimal('0.9'))) @@ -223,12 +227,13 @@ class TestRegularFieldMappings(TestCase): class TestSerializer(serializers.ModelSerializer): class Meta: model = RegularFieldsModel - fields = ('auto_field', 'method') + fields = ('auto_field', 'method', 'docstring_method') expected = dedent(""" TestSerializer(): auto_field = IntegerField(read_only=True) method = ReadOnlyField() + docstring_method = ReadOnlyField(help_text='test') """) self.assertEqual(repr(TestSerializer()), expected)