Django:如何使用查询集并在模板中显示结果?
Posted
技术标签:
【中文标题】Django:如何使用查询集并在模板中显示结果?【英文标题】:Django: how to use a queryset and display results in a template? 【发布时间】:2016-03-16 09:02:20 【问题描述】:我正在为 Django QuerySets 苦苦挣扎。这是我的数据库的 JSON 转储数据:
[
"fields":
"label_number": "1",
"label_type": "A",
"label_desc_nl": "NL Text",
"label_desc_en": "EN Text",
"label_desc_de": "DE Text",
"label_desc_pl": "PL Text",
"label_desc_es": "ES Text",
"label_desc_fr": "FR Text",
"label_desc_it": "IT Text",
"label_desc_pt": "PT Text",
"label_desc_cs": "CS Text"
,
"model": "myapp.labels",
"pk": 1
,
"fields":
"label_number": "1",
"label_type": "B",
"label_desc_nl": "NL Text",
"label_desc_en": "EN Text",
"label_desc_de": "DE Text",
"label_desc_pl": "PL Text",
"label_desc_es": "ES Text",
"label_desc_fr": "FR Text",
"label_desc_it": "IT Text",
"label_desc_pt": "PT Text",
"label_desc_cs": "CS Text"
,
"model": "myapp.labels",
"pk": 2
]
假设我想从“label_desc_fr”获取数据,其中 label_number 为 1 AND label_type = B。我尝试在我的视图中构建和执行一个 QuerySet,如下所示:
q1 = labels.objects.filter(label_number="1")
q1 = q1.filter(label_type="B")
return render(request, 'frontend/base_home.html', 'q1' : q1)
页面加载没有错误。现在我正在尝试从我的模板中访问数据,如下所示:
q1.label_desc_fr
什么都没有显示。 :( 我搜索了一种查询集来显示所有变量 q1.? 的方法,但我找不到这样做的方法。在我看来,Django 文档很清楚如何创建查询集,但对如何创建查询集不太了解从模板中检索它们。现在我想知道,如何在我的模板中检索我的结果?
谢谢大家!
【问题讨论】:
您询问过查询集,但似乎忘记了q1
是 查询集;即它是多个标签实例的容器。您需要遍历该容器。
【参考方案1】:
您的问题是您正在模板中访问q1
,它是您的完整查询集,它不是单个对象。我认为这应该可行:
q1 = labels.objects.filter(label_number="1", label_type="B")
return render(request, 'frontend/base_home.html', 'q1' : q1)
然后在你的模板中:
% for q in q1 %
q.label_desc_fr
% endfor %
【讨论】:
非常感谢你,这确实有效!我觉得我很接近了,你的解决方案完成了,谢谢。 :)以上是关于Django:如何使用查询集并在模板中显示结果?的主要内容,如果未能解决你的问题,请参考以下文章
Django:如何在 ajax 中返回模型表单集并在模板中使用