diff options
| author | Tom Christie | 2014-10-31 16:40:06 +0000 |
|---|---|---|
| committer | Tom Christie | 2014-10-31 16:40:06 +0000 |
| commit | 65a0d083d63d4f22a2e985a847284ad4f4a3d572 (patch) | |
| tree | f0030c8c1a7e4d2f578898191ebebdafc7255ba7 /rest_framework/serializers.py | |
| parent | 5e1ed0aa9578be360261d5ba8b89aec959e948c8 (diff) | |
| parent | 140f8620aea44daa368b244d96c68377716fac7e (diff) | |
| download | django-rest-framework-65a0d083d63d4f22a2e985a847284ad4f4a3d572.tar.bz2 | |
Merge pull request #1963 from carljm/lazy-fields
Set up serializer fields lazily on-demand.
Diffstat (limited to 'rest_framework/serializers.py')
| -rw-r--r-- | rest_framework/serializers.py | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index d24cb99d..7d85894f 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -22,6 +22,7 @@ from django.db import models from django.forms import widgets from django.utils import six from django.utils.datastructures import SortedDict +from django.utils.functional import cached_property from django.core.exceptions import ObjectDoesNotExist from rest_framework.settings import api_settings @@ -197,7 +198,6 @@ class BaseSerializer(WritableField): self.init_data = data self.init_files = files self.object = instance - self.fields = self.get_fields() self._data = None self._files = None @@ -212,6 +212,10 @@ class BaseSerializer(WritableField): ##### # Methods to determine which fields to use when (de)serializing objects. + @cached_property + def fields(self): + return self.get_fields() + def get_default_fields(self): """ Return the complete set of default fields for the object, as a dict. |
