在DRF中把实例传递给序列化程序是否有必要?

2024-06-06 21:51:16 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个serialize DeviceGroup和一个用于将设备发布到组中的apieview类。在

DeviceGroup的序列化程序是

class DeviceGroupSerializer(serializers.ModelSerializer):
    id = serializers.UUIDField(source='token', format='hex', read_only=True)
    class Meta:
        model = DeviceGroup
        fields = ['id','name']

class DevicesGroupsAPIView(APIView):
    permission_classes = (permissions.IsAuthenticated,)
    def post(self, request, token=None, format=None):
        print('reqquest', request.data)
        print('token', token)
        device_group_instance = DeviceGroup.objects.get(token=token)
        for device_token in request.data['devices']:
            device = Device.objects.get(token=device_token, owner=request.user)
            device.group = device_group_instance
            device.save()

在上面的post函数中,是否必须创建序列化程序的实例并检查序列化程序是否有效,然后返回响应。在

Device和DeviceGroup之间的关系是一个设备只能在一个组上,而一个组可以有多个设备(设备id的列表)

如果我需要使用DeviceGroupSerializer来发布设备列表,post函数应该是什么?我不明白这个序列化程序和查看部分清楚。在


Tags: 程序tokennoneidformat序列化requestdevice
1条回答
网友
1楼 · 发布于 2024-06-06 21:51:16

Django-REST框架是松散耦合的,因此可以绕过序列化程序。在

但是,这可能需要一些工作,这取决于您正在做什么。注意,对于POST,您可以自己执行一些检查。在

关于Django REST框架性能优化的tomchristiespost演示了如何删除框架的某些部分。在

相关问题 更多 >