2017-03-20 1 views
0

기본적으로 rest_framework_bulk를 사용하는 POST의 응답을 수정할 수있는 방법을 알고 싶습니다. 기본적으로 항상 동일한 객체 또는 객체를 반환하기 때문에 서비스에 의해 배열로 전송됩니다.Django REST Framework에서 POST로 응답을 생성하는 방법 Bulk

모델 :

class employee(): 
    name = models.CharField(max_length=4, verbose_name='name') 
    profession = models.CharField(max_length=4, verbose_name='profession') 
    userCreation = models.ForeignKey(userCreation, verbose_name='user') 

    class Meta: 
     verbose_name='employee' 

    def __unicode__(self): 
     return self.name 

시리얼 :

from django.forms import widgets 
from .models import employee 
from rest_framework import serializers 
from rest_framework_bulk import (BulkListSerializer, BulkSerializerMixin, ListBulkCreateUpdateDestroyAPIView,) 

class employeeSerializer(BulkSerializerMixin, serializers.ModelSerializer): 
    class Meta(object): 
     relation_user = serializers.ReadOnlyField(source='user.username') 
     model = employee 
     fields = ('id', 'name', 'profession', 'relation_user') 

보기 :

from django.shortcuts import render 
from .models import employee 
from .serializers import employeeSerializer 
from rest_framework import generics 
from rest_framework_bulk import ListBulkCreateAPIView 

class createEmployee(ListBulkCreateAPIView): 
    queryset = employee.objects.all() 
    serializer_class = employeeSerializer 

def perform_create(self, serializer): 
    serializer.save(relation_user=self.request.user) 

URL :

from django.conf.urls import url 
from rest_framework.urlpatterns import format_suffix_patterns 
from employee import views 

urlpatterns = [url(r'^api/createEmployee/$', views.createEmployee.as_view())] 

urlpatterns = format_suffix_patterns(urlpatterns) 

    def perform_create(self, serializer): 
     serializer.save(relation_user=self.request.user) 

이 아주 잘 작동하고 난 나머지 서비스

{ 
    name: 'Jhon', 
    profession: 'Medic' 
} 

에 보내 문제없이 직원, JSON을 작성해,이 대답입니다 : 내가 응답 할 수 있도록하고 싶습니다

{ 
    name: 'Jhon', 
    profession: 'Medic' 
} 

합계, 계산 또는 단순히 생성 된 직원을 나타내는 메시지와 다른 것을 넣으십시오. (

class createEmployee(ListBulkCreateAPIView): 
    queryset = employee.objects.all() 
    serializer_class = employeeSerializer 

    def create(self, request, *args, **kwargs): 
     # perform bulk creation with rest_framework_bulk 
     super(createEmployee, self).create(request, *args, **kwargs) 
     # customise response message here 
     return Response('Employee successfully created', status=status.HTTP_201_CREATED) 

당신은 또한 단지 대량 창조를위한 사용자 정의 메시지를 반환 할 수 없습니다 :

나는 당신이보기에 create 메소드를 오버라이드 (override) 할 수있는 무언가

return Response(succes='Employee successfully created') 

답변

0

처럼 될 것 APIView으로 생각 단일 개체의 경우) :

def create(self, request, *args, **kwargs): 
     response = super(createEmployee, self).create(request, *args, **kwargs) 
     bulk = isinstance(request.data, list) 
     if not bulk: 
      return response 

     # customise response message here only for bulk creations 
     return Response('%d employees successfully created' % len(request.data), status=status.HTTP_201_CREATED) 
관련 문제