当用户输入POST API数据时,他们将输入A和B键值对。我想修改post()以适合我的需求。当用户点击提交或发布API数据时,我想解析以下内容。
是否要在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)
答案 0 :(得分:0)
我认为您是要发送单个对象,而不是对象列表。因为ListCreateAPIView
的{{1}}函数将仅在模型中创建一个对象。
因此,如果用户发送包含以下数据的POST请求:
create
您可以从{
"A": "1234",
"B": "12345",
}
字典中访问它。
request.data
如果A或B为“无”,则表示该数据未随请求正确发送。
答案 1 :(得分:0)
您需要将数据解析为密钥对。试试这个:
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"})