Даже не уверен, что правильно задаю вопрос. Вот ситуация. У меня есть запрос, сгенерированный путем доступа к отношениям внешнего ключа. Использование стандартных моделей Блог/запись в документации Django, скажем, я выбрал блог и теперь есть набор записей:Запросить набор запросов Django без создания нового набора запросов?
entries = Blog.objects.get(id=1).entry_set.all()
Таким образом, мы имеем несколько записей для блога, возможно, ноль. Я хотел бы сказать, как построить календарь и указать, какие дни имеют записи в блоге. Таким образом, я думаю, что нужно перебирать список дней в месяце или что-то еще, а также проверять элементы запроса для записи с этой датой. Вопрос в том, что это лучший способ сделать это? Моя первая мысль была сделать что-то вроде
dayinfo = [] # we will iterate over this in the template
for curday in month:
dayinfo.append({'day':curday, 'entry':entries.filter(day=curday)})
Проблема заключается в том, что вызов фильтра возвращает новый QuerySet, и генерирует новый SQL вызов для каждой итерации цикла. Мне просто нужно вырвать объект записи из записей, если он существует, и вставить его в мой календарь. Итак, каков наилучший способ сделать это? Я получил это для работы:
dayinfo.append({'day':day, 'entry':[e for e in entries if e.day == curday][0]})
Это не создает новые вызовы sql. Но это кажется уродливым.
Спасибо, это было то, что мне было нужно. Это скорее общая проблема кодирования, чем проблема Django. Я знал, что есть более простой способ сделать то, что я пытаюсь сделать! – chacmool