diff --git a/README.md b/README.md index 0f0d2fc76b60616e3607a47b6aea1eeb3b1bc4a8..26ec83192230afd51bd56dd68deeccd08ded7918 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 933d4e80fc91dac4f5ac24eebbd3f4077ab85feb..453363132a9d8d9e7f7b7452fbd4b36f0300d6f5 100644 --- a/djangoldp/serializers.py +++ b/djangoldp/serializers.py @@ -81,10 +81,11 @@ 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 + list(getattr(self.Meta, 'extra_fields', [])) def to_representation(self, obj): data = super().to_representation(obj)