2017-03-20 8 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) 

これは非常にうまく機能し、私は、RESTサービス

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

に送ることを問題なく従業員、 JSONを作成し、これが答えです:私はレスポンスのことができるようにしたいと思い

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

計算されたもの、または単に作成された従業員を示すメッセージとして異なるものを置く。

私はそれはあなたがあなたのビューでcreateメソッドをオーバーライドすることができ

return Response(succes='Employee successfully created') 

答えて

0

ようなものになるだろうAPIViewと思う:

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) 

あなたはまた、唯一のバルク創作のためにカスタマイズされたメッセージを返すことができます(ありません単一オブジェクトの場合):

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) 
関連する問題