python - 如何确保保留此订单
问题描述
我想知道确保保留此订单的最佳方法是什么,我认为最好的办法是应用一个动态运行的函数,而 sqlite 保留订单,postgres 不会重新排序它什么时候它被保存到数据库中,
list_of_dicts = [[{'id': '3', 'text': ' Perpetual ', 'score': 3}, {'id': '2', 'text': ' Peter Parker ', 'score': 2}, {'id': '1', 'text': ' Miles .T Morales ', 'score': 1}], [{'id': '3', 'text': 'Perpetual ', 'score': 3}, {'id': '1', 'text': 'Miles .T Morales ', 'score': 2}, {'id': '2', 'text': 'Peter Parker ', 'score': 1}], [{'id': '1', 'text': 'Miles .T Morales ', 'score': 3}, {'id': '3', 'text': 'Perpetual ', 'score': 2}, {'id': '2', 'text': 'Peter Parker ', 'score': 1}], [{'id': '3', 'text': ' Perpetual ', 'score': 3}, {'id': '2', 'text': ' Peter Parker ', 'score': 2}, {'id': '1', 'text': ' Miles .T Morales ', 'score': 1}], [{'id': '1', 'text': ' Miles .T Morales ', 'score': 3}, {'id': '2', 'text': ' Peter Parker ', 'score': 2}, {'id': '3', 'text': ' Perpetual ', 'score': 1}], [{'id': '2', 'text': ' Peter Parker ', 'score': 3}, {'id': '3', 'text': ' Perpetual ', 'score': 2}, {'id': '1', 'text': ' Miles .T Morales ', 'score': 1}]]
我想从最高分到最低分对列表进行排序,但不依赖于数据库,
编辑
我使用 django models.JSONField 来存储数据。当我将它拉到我的视图中时,添加 queryset.order_by('data__score') 对它没有影响。与models.Meta排序属性相同
.....
class Meta:
ordering = ("data__score",)
没有效果,我认为这与数据库有关,现在我只想知道如何使用python对它进行排序,而不是依赖于数据库/ORM不一致。
编辑 2
我的模型:
class Ballot(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
election = models.ForeignKey(
Election, related_name="ballots", on_delete=models.CASCADE
)
data = models.JSONField(null=True)
cast_date = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
解决方案
我能够通过 python 排序和函数属性来解决这个问题。
model_ballot = ModelBallot.objects.filter(
election__id__exact=election_id
).values_list("data", flat=True)
new_model_ballot = []
ballots = list()
for b in model_ballot:
newlist = sorted(b, key=lambda k: k['score'], reverse=True)
new_model_ballot.append(newlist)
推荐阅读
- angular - CanDeactivate Route Guard 即使单击取消按钮,也将选定的路由显示为活动的
- javascript - 变量不是全局变量或文件系统读取文件太慢
- arrays - TypeScript 如何推断数组字面量的元素类型?
- c++ - 使用opengl显示3D点
- node.js - 访问 JSON 返回 undefined
- php - Laravel Nova - 创建新记录时如何过滤 BelongsTo 字段选择?
- java - 设置单选按钮值
- email - golang net/smtp 获取 smtp 服务器响应 DSN
- c - 检查指针是否到达字符串结尾时出错
- php - 为什么 Docker 和 Heroku 会为我的小型测试应用程序推送这么大的层?