擅长:python、mysql、java
<p>除非绝对需要,否则不使用原始查询,即使如此,也不需要手动连接到数据库,因为您可以轻松访问连接对象。总体而言,您的检索方法可以改进如下:</p>
<pre><code>def retrieve(self, request, pk=None):
queryset = CpuProject.objects.all()
cpu = get_object_or_404(queryset, pk=pk)
serializer = serializers.cpuProjectsSerializer(cpu)
return Response(serializer.data)
</code></pre>
<p>短得多,更容易阅读。但是如果使用ModelViewset,即使这样也不需要!然后默认的检索方法将为您处理这些问题。所以你的视图集减少到</p>
^{pr2}$
<p>这里不需要检索方法!!在</p>
<p>但我看到您试图通过名称检索特定的CpuProject项(而不是使用它的PK)。为此,您需要添加一条路线</p>
<pre><code>from rest_framework.decorators import detail_route, list_route
@detail_route(url_path='(?P<slug>[\w-]+)')
def get_by_name(self, request, pk=None,slug=None):
queryset = CpuProject.objects.all()
cpu = get_object_or_404(queryset, name=slug)
serializer = serializers.cpuProjectsSerializer(cpu)
return Response(serializer.data)
</code></pre>