You can do this in your API view by overriding the method that returns the response, i.e. "verb" representation of the API. For example, in ListAPIView, you override get() :
class UserList(generics.ListAPIView): model = django.contrib.auth.get_user_model() serializer_class = UserSerializer def get(self, request, *args, **kwargs): response = super(UserList, self).get(request, *args, **kwargs) for result in response.data['results']: if result['email'] is None: result.pop('email') return response
You probably want to add some more attribute checking, but the point is how to do this. In addition, I would add that removing fields from some results can cause problems for the consumer application if it expects them to be present for all records.
Fiver source share