Jetzt kann ich neue Daten von json an meine Django-App senden, aber kann die Daten nicht aktualisieren oder löschen. Ich versuche, die Update-Methode in der serializer.py zu überschreiben, aber es funktioniert immer noch nicht. Die Daten behalten ursprüngliche Werte bei.Django REST: Wie man Daten in Nested ModelSerializer (Update) einfügt
Meine Frage ist, wie Sie alle Daten auf einmal zu aktualisieren und Daten wie subtaskdata, friendsdata oder chatroomdata löschen.
Teil meiner 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)