diff options
| author | Tom Christie | 2014-09-15 13:55:09 +0100 | 
|---|---|---|
| committer | Tom Christie | 2014-09-15 13:55:09 +0100 | 
| commit | d196608d5af912057baba79ab13d05d876368ad2 (patch) | |
| tree | 1ce4dd59acaad98d6f6e0910618e00d98193405c | |
| parent | 0c15b97b331f7937cbc5d85f660c07b3c92917a0 (diff) | |
| download | django-rest-framework-d196608d5af912057baba79ab13d05d876368ad2.tar.bz2 | |
Fix nested model serializer base class
| -rw-r--r-- | rest_framework/serializers.py | 7 | ||||
| -rw-r--r-- | tests/test_model_field_mappings.py | 6 | 
2 files changed, 9 insertions, 4 deletions
diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index ba8d475f..40d76897 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -368,6 +368,7 @@ class ModelSerializer(Serializer):          models.TimeField: TimeField,          models.URLField: URLField,      } +    nested_class = None  # We fill this in at the end of this module.      _options_class = ModelSerializerOptions @@ -454,7 +455,7 @@ class ModelSerializer(Serializer):          Note that model_field will be `None` for reverse relationships.          """ -        class NestedModelSerializer(ModelSerializer): +        class NestedModelSerializer(self.nested_class):              class Meta:                  model = related_model                  depth = self.opts.depth - 1 @@ -694,3 +695,7 @@ class HyperlinkedModelSerializer(ModelSerializer):              'app_label': model._meta.app_label,              'model_name': model._meta.object_name.lower()          } + + +ModelSerializer.nested_class = ModelSerializer +HyperlinkedModelSerializer.nested_class = HyperlinkedModelSerializer diff --git a/tests/test_model_field_mappings.py b/tests/test_model_field_mappings.py index a32345b3..d946172e 100644 --- a/tests/test_model_field_mappings.py +++ b/tests/test_model_field_mappings.py @@ -150,13 +150,13 @@ class TestRelationalFieldMappings(TestCase):              TestSerializer():                  url = HyperlinkedIdentityField(view_name='relationalmodel-detail')                  foreign_key = NestedModelSerializer(read_only=True): -                    id = IntegerField(label='ID', read_only=True) +                    url = HyperlinkedIdentityField(view_name='foreignkeytargetmodel-detail')                      name = CharField(max_length=100)                  one_to_one = NestedModelSerializer(read_only=True): -                    id = IntegerField(label='ID', read_only=True) +                    url = HyperlinkedIdentityField(view_name='onetoonetargetmodel-detail')                      name = CharField(max_length=100)                  many_to_many = NestedModelSerializer(many=True, read_only=True): -                    id = IntegerField(label='ID', read_only=True) +                    url = HyperlinkedIdentityField(view_name='manytomanytargetmodel-detail')                      name = CharField(max_length=100)          """)          self.assertEqual(repr(TestSerializer()), expected)  | 
