diff options
| author | Tom Christie | 2014-04-28 20:23:12 +0100 | 
|---|---|---|
| committer | Tom Christie | 2014-04-28 20:23:12 +0100 | 
| commit | 1085b64fecc1b314fbd29da263325a56af2d78fe (patch) | |
| tree | 744abf109a9537a508d6a42d21fc4289e2c75fd3 /rest_framework | |
| parent | ce2e55a5131df9421ee589d4b8d2df1f0c1b0c5a (diff) | |
| parent | a6e525cf3a22a01a4f9924e975ea7288d80ac5ef (diff) | |
| download | django-rest-framework-1085b64fecc1b314fbd29da263325a56af2d78fe.tar.bz2 | |
Merge pull request #1543 from sinitsynsv/master
Add help_text and verbose_name attribute mapping for related field
Diffstat (limited to 'rest_framework')
| -rw-r--r-- | rest_framework/serializers.py | 8 | ||||
| -rw-r--r-- | rest_framework/tests/models.py | 3 | ||||
| -rw-r--r-- | rest_framework/tests/test_serializer.py | 26 | 
3 files changed, 35 insertions, 2 deletions
diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index ea9509bf..9cb548a5 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -828,6 +828,10 @@ class ModelSerializer(Serializer):          if model_field:              kwargs['required'] = not(model_field.null or model_field.blank) +            if model_field.help_text is not None: +                kwargs['help_text'] = model_field.help_text +            if model_field.verbose_name is not None: +                kwargs['label'] = model_field.verbose_name          return PrimaryKeyRelatedField(**kwargs) @@ -1088,6 +1092,10 @@ class HyperlinkedModelSerializer(ModelSerializer):          if model_field:              kwargs['required'] = not(model_field.null or model_field.blank) +            if model_field.help_text is not None: +                kwargs['help_text'] = model_field.help_text +            if model_field.verbose_name is not None: +                kwargs['label'] = model_field.verbose_name          if self.opts.lookup_field:              kwargs['lookup_field'] = self.opts.lookup_field diff --git a/rest_framework/tests/models.py b/rest_framework/tests/models.py index 6c8f2342..0256697a 100644 --- a/rest_framework/tests/models.py +++ b/rest_framework/tests/models.py @@ -143,7 +143,8 @@ class ForeignKeyTarget(RESTFrameworkModel):  class ForeignKeySource(RESTFrameworkModel):      name = models.CharField(max_length=100) -    target = models.ForeignKey(ForeignKeyTarget, related_name='sources') +    target = models.ForeignKey(ForeignKeyTarget, related_name='sources', +                               help_text='Target', verbose_name='Target')  # Nullable ForeignKey diff --git a/rest_framework/tests/test_serializer.py b/rest_framework/tests/test_serializer.py index 3ee2b38a..e688c823 100644 --- a/rest_framework/tests/test_serializer.py +++ b/rest_framework/tests/test_serializer.py @@ -9,7 +9,8 @@ from django.utils.translation import ugettext_lazy as _  from rest_framework import serializers, fields, relations  from rest_framework.tests.models import (HasPositiveIntegerAsChoice, Album, ActionItem, Anchor, BasicModel,      BlankFieldModel, BlogPost, BlogPostComment, Book, CallableDefaultValueModel, DefaultValueModel, -    ManyToManyModel, Person, ReadOnlyManyToManyModel, Photo, RESTFrameworkModel) +    ManyToManyModel, Person, ReadOnlyManyToManyModel, Photo, RESTFrameworkModel, +    ForeignKeySource, ManyToManySource)  from rest_framework.tests.models import BasicModelSerializer  import datetime  import pickle @@ -176,6 +177,16 @@ class PositiveIntegerAsChoiceSerializer(serializers.ModelSerializer):          fields = ['some_integer'] +class ForeignKeySourceSerializer(serializers.ModelSerializer): +    class Meta: +        model = ForeignKeySource + + +class HyperlinkedForeignKeySourceSerializer(serializers.HyperlinkedModelSerializer): +    class Meta: +        model = ForeignKeySource + +  class BasicTests(TestCase):      def setUp(self):          self.comment = Comment( @@ -1600,6 +1611,19 @@ class ManyFieldHelpTextTest(TestCase):          self.assertEqual('Some help text.', rel_field.help_text) +class AttributeMappingOnAutogeneratedRelatedFields(TestCase): + +    def test_primary_key_related_field(self): +        serializer = ForeignKeySourceSerializer() +        self.assertEqual(serializer.fields['target'].help_text, 'Target') +        self.assertEqual(serializer.fields['target'].label, 'Target') + +    def test_hyperlinked_related_field(self): +        serializer = HyperlinkedForeignKeySourceSerializer() +        self.assertEqual(serializer.fields['target'].help_text, 'Target') +        self.assertEqual(serializer.fields['target'].label, 'Target') + +  @unittest.skipUnless(PIL is not None, 'PIL is not installed')  class AttributeMappingOnAutogeneratedFieldsTests(TestCase):  | 
