python - 无法在 Django 休息更新视图中获取实例值
问题描述
我正在使用 Django 3.0 djangorestframework==3.11.0。我创建了一个任务更新视图并将 pk 传递给 url。问题是 - 虽然我已将序列化程序实例设置为我要更新的模型对象。序列化程序实例未显示。
模型.py
from django.db import models
# Create your models here.
class Task(models.Model):
title = models.CharField(max_length=200)
completed = models.BooleanField(default=False, blank=True, null=True)
def __str__(self):
return self.title
序列化程序.py
from rest_framework import serializers
from .models import Task
class TaskSerializer(serializers.ModelSerializer):
class Meta:
model = Task
fields = '__all__'
网址.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.apiOverview, name='api-overview'),
path('task-list/', views.taskList, name='task-list'),
path('task-detail/<str:pk>/', views.taskDetail, name='task-detail'),
path('task-create/', views.taskCreate, name='task-create'),
path('task-update/<str:pk>/', views.taskUpdate, name='task-update'),
]
视图.py
from django.shortcuts import render
from rest_framework.decorators import api_view
from rest_framework.response import Response
from .models import Task
from .serializers import TaskSerializer
@api_view(['POST'])
def taskUpdate(request, pk):
task = Task.objects.get(id=pk)
serializer = TaskSerializer(instance=task, data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
url http://localhost:8000/api/task-update/4/ 上的预期行为
http://localhost:8000/api/task-update/4/ 上的实际行为
如您所见,内容字段为空,但我希望已关联的 json 以 pk = 4 显示在那里。