Как сделать так, чтобы этот порядок был сохранен
Я хочу узнать, какой лучший способ убедиться, что этот порядок сохраняется, я думаю, что лучше всего будет применить функцию, которая работает с этим на лету, в то время как 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}]]
Я хочу отсортировать список от наибольшего балла к наименьшему, но без зависимости от базы данных,
EDIT
Я использую django models.JSONField для хранения данных. добавление queryset.order_by('data__score') не влияет на это, когда я вытаскиваю его в представление. то же самое с models.Meta ordering attribute
.....
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)