我正在嘗試使用以這種格式發送 POST 請求的回呼 API 中的資料:
[
{
"key1": "asd",
"key2": "123"
}
]
但是,我的 API 目前僅在這樣發送時才有效:
{
"key1": "asd",
"key2": "123"
}
序列化程式.py:
class RawIncomingDataSerializer(serializers.ModelSerializer):
class Meta:
model = RawIncomingData
fields = '__all__'
視圖.py:
class RawIncomingDataViewSet(viewsets.ModelViewSet):
queryset = RawIncomingData.objects.all()
serializer_class = RawIncomingDataSerializer
發布資料中永遠只有一個物件,所以我正在尋找一種簡單的解決方法,而不必重寫我的序列化程式來解釋一個發布請求中的多個物件。
uj5u.com熱心網友回復:
在這種情況下,您可以在呼叫中覆寫create并明確指定:many=Trueget_serializer
class RawIncomingDataViewSet(viewsets.ModelViewSet):
...
def create(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data, many=True)
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)
uj5u.com熱心網友回復:
這個想法是傳遞many=True到序列化器類中。所以,我會選擇覆寫該get_serializer(...)方法,因為
class RawIncomingDataViewSet(viewsets.ModelViewSet):
queryset = RawIncomingData.objects.all()
serializer_class = RawIncomingDataSerializer
def get_serializer(self, *args, **kwargs):
kwargs["many"] = True
return super().get_serializer(*args, **kwargs)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/340996.html
標籤:Python 姜戈 Django 休息框架 django-rest-viewsets
