django - 当我更新一条记录时,django 的排序结果发生了变化
问题描述
我使用了 postgresql 和 rest_framework.filters.OrderingFilter 库
在我的观点中:
...
serializer_class = myModelSerializer
querset = myModel.objects.all().order_by('-id')
filter_backends = (DjangoFilterBackend, OrderingFilter)
ordering_fields = ('fields1', 'fields2')
例如:我有五条按fields2 desc排序的记录:
- 记录3
- 记录2
- 记录1
- 记录4
- 记录5
当我更新record2 fields3并仍然按字段desc排序时,排序结果发生了变化:
- 记录2
- 记录1
- 记录3
- 记录4
- 记录5
为什么会这样?
顺便说一句:这个问题在mysql上没有发生
解决方案
我已经解决了这个问题
filter_backends = (DjangoFilterBackend, MyOrderingFilter)
只需在 ordering_list 中附加默认排序字段(“id”或“create_time”)
from rest_framework.filters import OrderdingFilter
class MyOrderingFilter(OrderingFilter):
def get_orderding(self, request, queryset, view):
orderding = super().get_orderding(request, queryset, view)
if ordering and orderding != self.get_default_orderding(view):
orderding.append(self.get_default_orderding(view)[0])
return orderding
推荐阅读
- c# - 如何在itextSharp的表格中垂直放置单元格?
- java - 在 JFrame 中显示一个透明的 GIF 而没有在播放时保留每一帧?(初学者)
- php - 如果大于则显示一个单词,如果小于则显示另一个
- javascript - 如何在 filesaver.js 中知道下载何时开始和结束
- javascript - 复选框在具有相同类名的单击事件上提示多个时间问题
- php - 如何获取 column1 中的 value1 和 column2 中的 value2 但 column1 中的 value2 在 column2 中没有 value1 的行?
- android - *** 帮助 *** ADB 命令行 - 更新/下载 Google Play 商店应用
- entity-framework - EF 非核心的 Microsoft.EntityFrameworkCore.InMemory 替代方案?
- python - 我的不和谐机器人可以从 subreddit 中抓取一个随机的“热门”帖子并根据命令链接它吗?
- django - 使用 Djongo 的 Django 中的 Mongodb 错误:pymongo.errors.OperationFailure:过滤器中不支持的类型