当用户输入POST API数据时,他们将输入A和B键值对。我想修改post()以满足我的需要。当用户单击submit或posts数据时,我想解析下面的内容。
无论如何,在api视图上返回这些字段(或者当用户单击提交时)之前解析这些字段?。
这就是用户试图使用post API发布的内容。
[
{
"A": "1234",
"B": "12345",
},
]我所做的:
views.py
class MyModelList(generics.ListCreateAPIView):
queryset = MyModel.objects.all()
serializer_class = MyModeSerializer
permission_classes = (permissions.IsAuthenticated,)
def post(self, request, *args, **kwargs):
##parse A values from key value pair so that value == 1234
##parse B values from key value pair so that value == 12345
return self.create(request, *args, **kwargs)models.py
class Models(models.Model):
A = models.CharField(max_length=255, null=False)
B = models.CharField(max_length=255, null=False)发布于 2019-02-19 17:31:44
我想你是想发送一个对象,而不是一个对象列表。因为ListCreateAPIView的create函数将只在模型中创建一个对象。
因此,如果用户发送带有以下数据的POST请求:
{
"A": "1234",
"B": "12345",
}您可以从您的request.data字典访问它。
def post(self, request, *args, **kwargs):
A = request.data.get('A', None)
B = request.data.get('B', None)
return self.create(request, *args, **kwargs)如果A或B为空,这将意味着数据没有与请求一起正确发送。
发布于 2019-02-19 17:37:03
您需要将数据解析为密钥对。试试这个:
class MyModelList(generics.ListCreateAPIView):
queryset = MyModel.objects.all()
serializer_class = MyModeSerializer
permission_classes = (permissions.IsAuthenticated,)
def post(self, request, *args, **kwargs):
pairs = request.data()
for pair in pairs:
model = Models.objects.create(**pair)
return Response({"results": "saved"})https://stackoverflow.com/questions/54771589
复制相似问题