首先说明一下出现问题的场景:
我用的是PostgreSQL+postgis,里面存储的是很多的点数据。
然后是直接使用的逆向生成模型类,所以它自动导出的格式为:
models.py:
latitude = models.DecimalField(max_digits=65535, decimal_places=65535, blank=True, null=True)
longitude = models.DecimalField(max_digits=65535, decimal_places=65535, blank=True, null=True)
返回数据的方法为:
class AttractionView(APIView):
def get(self, request):
data = models.Jingdian.objects.all()
serializer = Serializers(instance=data, many=True)
return Response({"code": 200,"data":{"record":serializer.data}})
就是一个很简单的返回数据的方法。
然后就报错:Django exception: decimal.InvalidOperation: [<class 'decimal.InvalidOperation'>]
我的解决方法是直接将models.py里面的DecimalField更改为FloatField:
models.py:
latitude = models.FloatField(blank=True, null=True)
longitude = models.FloatField(blank=True, null=True)
因为我这里就是一个简单的经纬度,所以我直接更改也没有什么太大的影响,只要能出正确的经纬度就行。如果的确是需要确保使用decimal,可能就还得想其它的方法了。
如果我这种方法有什么问题或者有更好的解决办法欢迎在评论区留言!