0
これでjsonによってdjangoアプリケーションに新しいデータをPOSTできますが、データを更新したり削除することはできません。私は、serializer.pyのupdateメソッドをオーバーライドしようとしますが、それでも動作しません。データは元の値を保持します。Django REST:ネストされたModelSerializerのデータをPUTする方法(アップデート)
私の質問は、すべてのデータを一度に更新し、subtaskdata、friendsdata、またはchatroomdataなどのデータ個人を削除する方法です。
私serializer.pyの一部
class SubtaskDataSerializer(serializers.ModelSerializer):
class Meta:
model = SubtaskData
fields = ("subtask_name","subtask_deadline","subtask_completion",
"subtask_importance","subtask_item")
depth = 3
class TaskDataSerializer(serializers.ModelSerializer):
SubtaskDatas = SubtaskDataSerializer(many = True)
class Meta:
model = TaskData
fields = ("task_name", "task_is_group",
"task_time", "task_score", "task_member_list",
"task_bulletin","SubtaskDatas")
read_only_fields = ('SubtaskDatas',)
depth = 2
class FriendsDataSerializer(serializers.ModelSerializer):
class Meta:
model = FriendsData
fields = ("friend_name","friend_account")
depth = 2
class UserDataSerializer(serializers.ModelSerializer):
TaskDatas = TaskDataSerializer(many = True)
FriendsDatas = FriendsDataSerializer(many = True)
ChatroomDatas = ChatroomDataSerializer(many = True)
photo = Base64ImageField(
max_length=None, use_url=True,
)
class Meta:
model = UserData
fields = ("pk","account","password","username","gender","score",
"photo","TaskDatas","FriendsDatas","ChatroomDatas")
read_only_fields = ('TaskDatas','FriendsDatas','ChatroomDatas',)
depth = 1
views.py
@api_view(['GET','POST'])
def jobterm_list(request, format=None):
if request.method=="GET":
UserDatas =list(UserData.objects.all())
serializer = UserDataSerializer(UserDatas,many=True)
return Response(serializer.data)
elif request.method == 'POST':
serializer = UserDataSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
@api_view(['GET', 'PUT', 'DELETE']) #
def jobterm_detial(request,pk, format=None):
try:
User_Data = UserData.objects.get(pk=pk)
except UserData.DoesNotExist:
return Response(status=status.HTTP_404_NOT_FOUND)
if request.method == "GET":
serializer = UserDataSerializer(User_Data)
return Response(serializer.data)
elif request.method == "PUT":
serializer = UserDataSerializer(User_Data,data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
else:
return Response(serializer.errors,status=status.HTTP_400_BAD_REQUEST)
elif request.method == "DELETE":
User_Data.delete()
return Response(status=status.HTTP_204_NO_CONTENT)