From b02da1067fb821b1a3af8a328a62187ae2828ea5 Mon Sep 17 00:00:00 2001 From: Rob Atkinson <rob@metalinkage.com.au> Date: Mon, 5 Nov 2018 12:08:46 +1100 Subject: [PATCH] Support default serialiser fields for all cases, remove redundant field filtering. --- README.md | 3 +++ djangoldp/serializers.py | 10 ++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 0f0d2fc7..26ec8319 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,7 @@ class Todo(models.Model): ``` +#### 3.1 Configure field visibility (optional) Note that at this stage you can limit access to certain fields of models using ``` @@ -53,6 +54,8 @@ from django.contrib.auth.models import User User._meta.serializer_fields = ('username','first_name','last_name') ``` +Note that this will be overridden if you explicitly set the fields= parameter as an argument to LDPViewSet.urls(), and filtered if you set the excludes= parameter. + ### 4- Add a url in your urls.py: ``` diff --git a/djangoldp/serializers.py b/djangoldp/serializers.py index 716a181d..e0ba2de1 100644 --- a/djangoldp/serializers.py +++ b/djangoldp/serializers.py @@ -81,10 +81,12 @@ class LDPSerializer(HyperlinkedModelSerializer): serializer_url_field = JsonLdIdentityField def get_default_field_names(self, declared_fields, model_info): - fields = super().get_default_field_names(declared_fields, model_info) - excludes = list(getattr(self.Meta, 'exclude', [])) - extra = list(getattr(self.Meta, 'extra_fields', [])) - return [f for f in fields if f not in excludes] + extra + try: + fields = list(self.Meta.model._meta.serializer_fields) + except: + fields = super().get_default_field_names(declared_fields, model_info) + + return fields def to_representation(self, obj): data = super().to_representation(obj) -- GitLab