如何修复Django Rest框架中的'MultipleObjectsReturned'错误

时间:2019-04-05 14:15:35

标签: python django django-rest-framework

我正在使用Django rest框架构建API。我目前有一个端点/api/v1/device-groups/,它返回所有设备组对象,如下所示:

 [
    {
        "device_group_name": "Default",
        "group_uuid": "3812a299-3ab9-4c00-a711-d166fb01075e",
        "color": "4286f4",
        "is_default": true,
        "customer": {
            "customer_name": "Testcustomer",
            "customer_uuid": "179fe73d-ec67-45ac-8dac-e2456ccd9b48"
        }
    }
]

在URL中使用customer_uuid显示与该客户相关的设备组

/api/v1/device-groups/179fe73d-ec67-45ac-8dac-e2456ccd9b48返回指定customer_uuid中附加的设备组的数据

我面临的问题是,每当有多个与customer_uuid相关的设备组时,都会导致MultipleObjectsReturned错误。我想列出与指定的customer_uuid相关的所有设备组。

我的serializers.py

class CustomerSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Customer
        fields = ('customer_name', 'customer_uuid')

class DeviceGroupSerializer(serializers.HyperlinkedModelSerializer):
    customer = CustomerSerializer(many=False, read_only=True, source='customer_uuid')

    class Meta:
        model = DeviceGroup
        fields = ('device_group_name', 'group_uuid', 'color', 'is_default', 'customer')

我的views.py

class DeviceGroupViewSet(viewsets.ModelViewSet):
    serializer_class = DeviceGroupSerializer
    lookup_field = 'customer_uuid'

    def get_queryset(self):
        queryset = DeviceGroup.objects.all()
        customer_uuid = self.request.query_params.get('customer_uuid', None)
        if customer_uuid is not None:
            queryset = queryset.filter(customer_uuid=customer_uuid)
        return queryset

我需要更改什么以便返回与customer_uuid相关的所有设备组?

0 个答案:

没有答案