我在django rest框架项目中编写了一个api.py视图,如下所示:
class StudentAcademicProgramList2(APIView):
def get(self, request, format=None):
student_academic_program = Student_academic_program.objects.filter(student=2773951)
serialized_Student_academic_program = StudentAcademicProgramSerializer2(student_academic_program, many=True)
return Response(serialized_Student_academic_program.data)
def update(self, request, format=None):
student_academic_program = Student_academic_program.objects.filter(student=2773951)
serializer = StudentAcademicProgramSerializer2(student_academic_program, many=True)
for x in xrange(0,len(serializer.data)):
serializer.primary_program = False
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status = status.HTTP_201_CREATED)
return Response(serializer.errors, status = status.HTTP_400_BAD_REQUEST)
def post(self, request, format=None):
serializer = StudentAcademicProgramSerializer2(data = request.DATA)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status= status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def delete(self, request, format=None):
student_academic_program = Student_academic_program.objects.filter(student=2773951)
student_academic_program.delete()
return Response(status = status.HTTP_204_NO_CONTENT)
它得到的json格式如下:
[
{
"id": 3684,
"student": 2773951,
"academic_program": 595,
"credits_completed": 28,
"academic_program_gpa": null,
"primary_program": false
},
{
"id": 3685,
"student": 2773951,
"academic_program": 596,
"credits_completed": 26,
"academic_program_gpa": null,
"primary_program": true
}
]
每当我在json api中获取和发布一些数据时,这两个类都能很好地工作。
如何在apiview中编写一个update()
函数,以便将json中的所有primary_program
值更改为false?由于for循环,我编写的更新函数将无法工作。如何更改此函数?
编辑:
我试过@Fabiano的答案,但是序列化程序没有更新数据库中的任何内容。
或者您可以允许用户执行修补程序,在这种情况下,您只需要在序列化程序构造函数上添加“partial=True”。 如果允许用户执行修补程序,则用户只能更改主程序字段。
您可以在文档中看到更多信息: http://www.django-rest-framework.org/api-guide/serializers#dealing-with-multiple-objects
相关问题 更多 >
编程相关推荐