Skip to content

Instantly share code, notes, and snippets.

@jessejohnson
Forked from dbrgn/mixins.py
Last active August 29, 2015 14:22
Show Gist options
  • Save jessejohnson/ab6f704f1e3874a682cf to your computer and use it in GitHub Desktop.
Save jessejohnson/ab6f704f1e3874a682cf to your computer and use it in GitHub Desktop.
class DynamicFieldsMixin(object):
"""
A serializer mixin that takes an additional `fields` argument that controls
which fields should be displayed.
Usage::
class MySerializer(DynamicFieldsMixin, serializers.HyperlinkedModelSerializer):
class Meta:
model = MyModel
"""
def __init__(self, *args, **kwargs):
super(DynamicFieldsMixin, self).__init__(*args, **kwargs)
fields = self.context['request'].QUERY_PARAMS.get('fields')
if fields:
fields = fields.split(',')
# Drop any fields that are not specified in the `fields` argument.
allowed = set(fields)
existing = set(self.fields.keys())
for field_name in existing - allowed:
self.fields.pop(field_name)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment