Django ArrayField绑定参数0时出错,可能是不支持的类型

2024-10-05 15:24:10 发布

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

我想在数据库中存储一个数组。为此,我在模型中使用了这种类型的ArrayType:[[[0.29, 10.27]]]。我想使用序列化程序来创建GET、POST和PUT请求。 这是我的模型:

型号.py

class Area(models.Model):
    osm = ArrayField(
        ArrayField(
            ArrayField(
                models.FloatField(),
                size=2,
            ),
        ),
    )

这是我的序列化程序:

序列化程序.py

class AreaSerializer(serializers.ModelSerializer):

    class Meta:
        model = Area
        fields = ['osm', ]

以下是我的观点:

视图.py

class ShopAreaList(ShopCustomListView):
    """Get or create areas for a shop"""
    queryset = Shop.objects.all()
    lookup_field = 'path'

    def get(self, request, path):
        """Depends on mustBeLogged to get areas of a shop"""
        shop = self.get_object()
        areas = Area.objects.filter(shop=shop)
        serializer = AreaSerializer(areas, many=True)
        return Response(serializer.data)

    def post(self, request, path):
        """For admin or shop owner to create areas"""
        shop = self.get_object()
        serializer = AreaSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save(shop=shop)
            return Response(serializer.data)
        return Response(serializer.errors)

以下是我得到的数据:

{
    "osm": [[[0.29, 10.27]]]
}

当我尝试运行POST方法时,出现以下错误:

Error binding parameter 0 - probably unsupported type.

我不知道我能做些什么来修复这个错误

提前感谢您的帮助


Tags: pathpyself程序dataget序列化osm