python - 从数据库中获取评论时重复元素
问题描述
我最近正在实施分页(Django Rest Framework - PageNumberPagination)。但是,我很快遇到了一个问题。你能帮我吗?
comments_list = CommentModel.objects.filter(blog=blog).order_by('-createdAt')
TL;博士; => 鉴于,我已经写了一篇文章并且多人可以添加评论 什么时候,他们写评论然后,我怎样才能确保,我没有显示重复的结果?
分页的当前实现:API:“每个页面包含 N 个项目。告诉我你想要什么页码?”
path/to/api/?page=N
前端:“以 Page = 1 开始,成功响应后,将其递增一。”
说明:说这些是我的评论
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
我想在“最新”->“最旧”中显示它们
[11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
每页有 N = 10 个结果。
[11, 10, 9, 8, 7, 6, 5, 4, 3, 2, | 1]
其中,“|” => 第 1 页。
我添加了一个新的评论C1
因此后端数组变为 =>[C1, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
分裂变成=>[C1, 11, 10, 9, 8, 7, 6, 5, 4, 3, | 2, 1]
但是,我的前端还不知道,因此当它请求第 2 页时,
列表变为 =>[C1, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2] + [2, 1] => [C1, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 2 ,1]
因此,创建一个显示在前端的重复条目。
(刷新后它会消失,直到其他人同时选择添加评论)
知道如何解决吗?
解决方案
Cursor Pagination
是这里的关键。
推荐阅读
- c# - 如何验证 MVC 模型?
- c++ - QWizard - 缺少后退按钮
- html - 修复了滚动时隐藏的导航栏
- corda - 使用网络地图服务更改 Corda 网络参数
- python - 如何按熊猫数据框中的分类值分组
- react-native - 未能捕获由 redux-saga call()ing 另一个 saga 引发的错误
- r - 库存模拟加速功能
- cmake - CMake:add_library()生成的变量?
- python - 带有 Pycharm 的 TensorFlow:tensorflow.python.framework.errors_impl.InternalError 的不准确上升:cudaGetDevice() 失败
- python - 将约束添加到优化问题时 Mosek 求解器失败(10000 个变量,使用 Python/cvxpy)