Django один запрос для подсчета и использования данных в цикле for?

Мне нужно отобразить общее количество & а также использовать queryset для цикла на шаблоне! Но дело в том, что это заставляет делать два запроса, есть ли какой-нибудь эффективный способ управлять этим в одном запросе?

data = Data.objects.filter(pk=pk)
count = data.count // 1st query

and then using data to iterate over loop on template // this makes second query 

Есть ли другой лучший способ сделать то же самое или эти два запроса нужны обязательно?

Вы можете использовать len в наборе запросов, чтобы принудительно выполнить оценку и в то же время получить счетчик. Это позволит избежать повторного обращения к базе данных при итерации того же набора запросов:

data = Data.objects.filter(pk=pk)
#  Hits the db and evaluates data
count = len(data) 

#  Will not hit the db again
for d in data: 
    print(d)

В итоге должен получиться всего один запрос.

Вернуться на верх