【发布时间】:2019-03-04 14:59:11
【问题描述】:
对我的 DRF 端点进行 PUT 或 PATCH 时,我收到 404 "detail": "Not found." 响应。我不确定是什么导致了错误,我的视图或序列化程序。
关于 DRF 的文档有点缺乏,并且没有可供我参考的 UpdateAPIView 工作示例。
代码:
urls.py
path('api/update/job/<int:pk>/', views.UpdateJobView.as_view() ),
序列化器.py
class JobsUpdateSerializer(serializers.ModelSerializer):
designer_one = serializers.PrimaryKeyRelatedField(many=False, queryset=UserProfile.objects.all())
designer_two = serializers.PrimaryKeyRelatedField(many=False, queryset=UserProfile.objects.all())
class Meta:
model = Job
fields = '__all__'
views.py
class UpdateJobView(generics.UpdateAPIView):
serializer_class = JobsUpdateSerializer
lookup_field = "pk"
def get_queryset(self):
queryset = Job.objects.all()
jobID = self.request.query_params.get('pk', None)
if jobID is not None:
queryset = queryset.filter(id=jobID)
else:
return False
我需要修改我的视图以包含get_object 函数吗?
Django==2.1.3
djangorestframework==3.9.0
【问题讨论】:
-
我们无能为力,因为仅查看提供的代码 sn-ps 并不清楚您要做什么。
-
@Linovia 抱歉,我正在尝试将更新的值从 Vue 应用程序传递给 Django。理想情况下使用 PATCH 请求,但 PUT 也可以。每个请求只会更改一个模型值。
-
仍然没有多说你想要做什么。阅读代码,您似乎正在尝试根据工作 id 过滤您的工作,这似乎有点奇怪。
-
所以在我的前端,用户看到的是一个工作列表,他们能够更改每个工作中字段的值,所以当他们更新一个字段时,我通过工作 ID 来知道什么工作正在更新中。
标签: python django django-rest-framework