def update(self, request, *posargs, **kwargs): # TODO: What if you try to update the `firm`? result = super(DocumentViewSet, self).update(request, *posargs, **kwargs) if 'file' in request.data: ver = DocumentVersion(file=request.data['file'], document_id = result.data['id']) ver.save() # re-querying seems awful, but otherwise the result contains obsolete data # from before the new version was attached result = self.retrieve(request, pk=result.data['id']) return result
def update(self, request, *posargs, **kwargs): # TODO: What if you try to update the `firm`? result = super(DocumentViewSet, self).update(request, *posargs, **kwargs) if 'file' in request.data: ver = DocumentVersion(file=request.data['file'], document_id=result.data['id']) ver.save() # re-querying seems awful, but otherwise the result contains obsolete data # from before the new version was attached result = self.retrieve(request, pk=result.data['id']) return result
def create(self, request, *args, **kwargs): data = dict(request.data.items()) data['firm'] = request.user.firm_id # cut-and-pasted from rest_framework.mixins.CreateModelMixin, because I can't # find a way to make it accept an edit to request.data serializer = self.get_serializer(data=data) serializer.is_valid(raise_exception=True) self.perform_create(serializer) headers = self.get_success_headers(serializer.data) result = Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers) ver = DocumentVersion(file=request.data['file'], document_id=result.data['id']) ver.save() return result