Django_rest_framework ListSerializ添加重复项的问题

2024-03-29 12:00:35 发布

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

我正在使用PhoneGap应用程序和基于Django的后端的组合来记录研究项目的位置数据点。在

PhoneGap应用程序将捆绑多个数据点,并将它们推送到django rest framework API端点,例如:

[{
    "speed": -1,
    "time": 1487292133229.221,
    "longitude": 172.123456,
    "bearing": -1,
    "location_type": "current",
    "latitude": -43.123456,
    "accuracy": 65,
    "heading": -1,
    "altitude": 3.585018873214722,
    "altitudeAccuracy": 10
}, ...
]

然而,由于PhoneGap应用程序是如何管理位置的,因此许多点在推送的JSON中是重复的。在

为了尝试解决这个问题,我重写了ListSerializer来遍历传入的数据并将其与数据库中已有的数据进行比较,方法是根据时间戳和用户id(谁上传的)计算一个(未加密的)唯一哈希,然后查看是否已经存在具有相同哈希的内容。采用这种方法是因为实际位置数据在添加到数据库之前是加密的。在

^{pr2}$

这种方法设法捕捉到大部分重复项,但不是全部。有没有人知道是什么原因导致了不重复的添加?我是否应该对数据模型的“hash”字段设置一个唯一的约束,然后静默地忽略导致IntegrityError的插入?在

感激不尽!在


Tags: 数据项目django方法restapi数据库应用程序
1条回答
网友
1楼 · 发布于 2024-03-29 12:00:35

因为您的json本身已被重复项损坏。我建议在后端(django)接收到json之后,首先要清理它。你可以试试这里给出的方法-https://stackoverflow.com/a/33955470/4815238

一旦JSON是干净的,那么就创建所需的对象。希望这有帮助。在

相关问题 更多 >