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 中返回模型表单集并在模板中使用

如何保存结果集并在 TableView 中显示所有数据

如何使用 Django QuerySet 生成总和并在模板中显示?

Django:如何编写查询以使用多列进行排序,通过模板显示

Django:如何编写查询以使用多列进行排序,通过模板显示

Django如何循环对象并在模板中显示变量