__copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)" __license__ = "AGPL v3" from rest_framework import serializers from ..models import Publication class PublicationSerializer(serializers.ModelSerializer): url = serializers.URLField(source='get_absolute_url') class Meta: model = Publication fields = [ 'title', 'author_list', 'abstract', 'doi_label', 'publication_date', 'url' ] def __init__(self, *args, **kwargs): # Don't pass the 'fields' arg up to the superclass fields = kwargs.pop('fields', None) # Instantiate the superclass normally super().__init__(*args, **kwargs) if fields is not None: # Drop any fields that are not specified in the `fields` argument. allowed = set(fields) existing = set(self.fields) for field_name in existing - allowed: self.fields.pop(field_name)