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)
В итоге должен получиться всего один запрос.