【发布时间】:2023-01-06 22:09:08
【问题描述】:
我必须在 APIVIEW 中显示计算值,但我不知道如何设置视图,它给我一个错误。
返回简单 JSON 的代码工作正常:
def protein_coverage(request, protein_id):
try:
proteins = Protein.objects.filter(protein=protein_id)
domain_length = 0
coverage = domain_length / protein_length
except Protein.DoesNotExist:
return HttpResponse({'message': 'This Protein does not exist'}, status=status.HTTP_404_NOT_FOUND)
if request.method == 'GET':
serializer = ProteinCoverageSerializer(coverage)
return JsonResponse(serializer.data,safe=False)
我为 APIView 尝试了这个:
class ProteinCoverage(generics.RetrieveAPIView):
serializer_class = ProteinCoverageSerializer
def get_queryset(self):
pk = self.kwargs['protein_id']
proteins = Protein.objects.filter(protein=pk)
domain_length = 0
coverage = domain_length / protein_length
return coverage
但它给了我一个错误:
Expected view ProteinCoverage to be called with a URL keyword argument named "pk". Fix your URL conf, or set the `.lookup_field` attribute on the view correctly.
我不确定,哪种 API 适合这种情况以及如何将单个变量传递给它。
documentation我也查了,但不清楚。 如何将此 JsonResponse 转换为 APIView?
【问题讨论】:
-
覆盖率看起来像一个浮点数,而不是一个查询集。
-
这是一个浮动,是的。这就是问题所在。我如何使用 APIView 显示它?