Как получить позицию в QuerySet?

304 просмотра
0
0 Комментариев

Здравствуйте.

Есть задача знать позицию элемента в QuerySet, которая зависит от order_by, по нескольким параметрам.

То есть, к примеру:

proposals = Proposal.objects.filter(job=job).order_by('-user__reputation', 'discount', 'amount')

И если изменится, скажем user__reputation, то, соответственно, и измениться позиция в QuerySet.

Как я могу получить эту позицию?


Добавить комментарий

2 Answers

Python Опубликовано 12.12.2018
0

В итоге, использую enumerate.

Если делать так:

obj = enumerate(Proposal.objects.all(), 1)

то print(obj) возвращает .

Если же итерировать:

for i in obj:
    print(i)
 
(1, <Proposal: y2htnrizbum2z0mpynvovnhzijpwqbza25rvyizisgahladjhm>)

А сериализовать удобно так:

serializers.serialize("json", Proposal.objects.all())
 
[{'index': index, 'object': obj} for index, obj in enumerate(json.loads(new_proposals_json), 1)]

Добавить комментарий
0

Попробуйте так:

list(proposals.values_list('id', flat=True)).index(obj.id)

Добавить комментарий
Напишите свой ответ на данный вопрос.
Scroll Up