Я работаю через эту проблему.Я надеюсь, что могу описать это хорошо.
Случай:
Предположим, у меня есть следующие типы или идентификаторы:
classes = ['classa','classb','classc','classd']
, и я также имею для каждогоиз вышеупомянутого класса, эти два подкласса:
subclasses = ['suba','subb']
Теперь я собираюсь извлечь точки данных из базы данных, отфильтрованной по этим классам и подклассам, используя функцию в моей модели, назвав ее get_data_filtered(a,b)
следующим образом:
context['custom-data'] = (
{c: {subc: self.get_object().get_data_filtered(c,subc)} for c in
classes for subc
in subclasses})
При печати этого контекста в консоли на уровне просмотра все в порядке.Однако при передаче его в шаблон и доступе к нему там данные не извлекаются!
При просмотре шаблона с использованием Django Debug Toolbar контекст шаблона показывает это:
context['custom-data']:'<<triggers database query>>'
Синтаксис на уровне шаблона похож на:
{% for i in custom-data.classa.suba %}
....
{% endfor %}
Мой анализ
Я думаю, что набор запросов никогда не оценивался таким образом.Я также пытался поставить .all()
и list(...)
, но не получил ничего полезного!
Может ли набор запросов оцениваться таким образом?
Если есть лучший способ решить такую задачу, пожалуйста, посоветуйте.
Версия Django: 2.2