Вы можете получить доступ к response.data
после этой строки
response = super(ContactRequestViewSet, self).create(request, *args, **kwargs)
, в которой будут храниться данные сериализатора.Тем не менее, если вам нужен реальный экземпляр вашей модели, этого будет недостаточно, и вам придется немного взломать свой путь.CreateModelMixin
, используемый в ModelViewSet
django-rest-framework, имеет следующие методы:
class CreateModelMixin:
# ... more stuff here
def create(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
self.perform_create(serializer)
headers = self.get_success_headers(serializer.data)
return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)
def perform_create(self, serializer):
serializer.save()
, поэтому вы можете переопределить метод perform_create
, чтобы сохранить экземпляр в атрибуте вашего ContactRequestViewSet
вот так:
def perform_create(self, serializer):
self.instance = serializer.save()
тогда в методе create
вы можете сделать что-то вроде этого:
def create(self, request, *args, **kwargs):
response = super(ContactRequestViewSet, self).create(request, *args, **kwargs) # This calls perform_create internally
send_email(self.instance)
return response