【发布时间】:2020-01-22 13:44:51
【问题描述】:
我正在解决这个有线问题。我希望我能描述得很好。
案例:
假设我有以下类型或标识符:
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 调试工具栏查看模板时,模板上下文显示如下:
context['custom-data']:'<<triggers database query>>'
模板级别的语法类似于:
{% for i in custom-data.classa.suba %}
....
{% endfor %}
我的分析
我认为查询集从未以这种方式进行评估。我还尝试输入.all() 和list(...),但没有任何用处!
查询集可以这样评估吗?
如果有更好的方法来完成这样的任务,请指教。
Django 版本:2.2
【问题讨论】:
-
get_data_filtered长什么样子? -
@Alex,这只是
filter对模型对象的一个声明。 -
那没有帮助;提供代码,因为大多数用户没有时间想象代码
-
@Moha369,整篇文章可以归结为以下问题:模板是否可以渲染具有
context['custom-data'] = {c{subc: ModelClass.objects.all()} for c in classes for subc in subclasses}的键值对的上下文?就我而言,它没有,而我假设它会。 -
好,祝你的项目好运。
标签: django python-3.x django-models django-templates django-views