我使用ModelViewSet
定义了一个视图集,如下所示
我尝试使用redefine方法来做一些事情,比如从芹菜中获取一些东西。但是这部分代码不起作用,它的作用就像一个标准的API,而不是我在get_job_detail
函数中写的那样。在
如何正确定义“detail_route”功能。在
在视图.py在
class JobViewSet(viewsets.ModelViewSet):
queryset = job.objects.all()
serializer_class = JobSerializer
@detail_route(methods=['get'])
def get_job_detail(self, request, pk=None):
# print('these part wont proceed')
job_item = self.get_object()
if job_item.isReady or job_item.isSuccessful:
return Response(self.serializer_class(job_item).data)
celeryjob = sometask.AsyncResult(pk)
celeryjob.get()
if celeryjob.state == 'SUCCESS':
job_item.state = celeryjob.state
job_item.result = celeryjob.result
job_item.isReady = True
job_item.isSuccessful = True
job_item.save()
if celeryjob.state == 'FAILURE':
job_item.state = celeryjob.state
job_item.result = celeryjob.result
job_item.isReady = True
job_item.isSuccessful = False
job_item.save()
return Response(self.serializer_class(job_item).data)
在网址.py在
^{pr2}$
现在正确的url是:
/job/<pk>/get_job_detail
如果您只想:/job/<pk>
您不需要使用@detail_route
只需将方法重命名为def retrieve(self, request, *args, **kwargs):
更多详细信息retrievemodelmixin其中一个部件类modelviewset相关问题 更多 >
编程相关推荐