我正在尝试对retrieveupdatedestoroyapieview中的原始sql查询使用get_queryset函数。使用ListCreateAPIView()可以正常工作。我是drf新手。如果有什么不对劲的地方,请解释一下。在
视图.py
class SubnetGatewayDevice(generics.ListCreateAPIView):
serializer_class = SubnetDeviceSerializer
def get_queryset(self):
sql_query = " select sd.hostname,sd.ma_number,sd.datacenter_id, ssd.ip, ssp.subnet_id, " \
" sd.id, ssd.id, ssp.id from subnets_device sd" \
" inner join subnets_subnetdevice as ssd on sd.id = ssd.device_id" \
" inner join subnets_subnetphysical as ssp on ssd.subnet_physical_id = ssp.id"
return list(Device.objects.raw(sql_query))
def perform_create(self, serializer):
serializer.save(data=self.request.data)
class SubnetGatewayDeviceDetail(generics.RetrieveUpdateDestroyAPIView):
# parser_classes = (JSONParser,)
serializer_class = SubnetDeviceSerializer
def get_queryset(self):
device_id = "5"
sql_query = " select sd.hostname as hostname,sd.ma_number,sd.datacenter_id, ssd.ip, ssp.subnet_id, " \
" sd.id, ssd.id, ssp.id from subnets_device sd" \
" inner join subnets_subnetdevice as ssd on sd.id = ssd.device_id" \
" inner join subnets_subnetphysical as ssp on ssd.subnet_physical_id = ssp.id " \
" where sd.id = "+device_id
return Device.objects.raw(sql_query)
# def perform_create(self, serializer):
# serializer.save(data=self.request.data)
序列化程序.py
^{pr2}$
如果需要,您可能需要重写
get_object()
方法。在RetrieveUpdateDestroyAPIView
对单个实例执行操作。你可以试着评估一下,你真正需要实现的是什么,以及怎样才能做得更恰当。在相关问题 更多 >
编程相关推荐