Django 在模板中使用两个不同的数据集填充表

Posted

技术标签:

【中文标题】Django 在模板中使用两个不同的数据集填充表【英文标题】:Django populating table in template with two different data sets 【发布时间】:2021-01-21 15:24:36 【问题描述】:

我有问题。我需要用两组不同的数据填充一个表,一个是查询集,另一个是列表。有没有办法使用一个% for % 语句用两组数据填充表? 类似% for categories, expenses in categoriesList and expensesList %

【问题讨论】:

具体情况如何? categoriesListexpenseList 是否保证长度相同?您将如何渲染数据? 是否也可以将查询集更改为列表。然后也许使用 zip 函数来迭代两者。参考链接:Convert query set to list 它们的长度相同。我需要在每次迭代中从费用列表中渲染费用,它只有一个整数,但是对于 categoryList 我有更多(id、描述、类别等)。理想的情况是我可以将费用列表包含到类别列表中,但我不知道如何以及是否可以将列表添加到查询集。 【参考方案1】:

您可以使用zip。在您看来,您可以通过以下方式准备:

def some_view(request):
    categoriesList = …
    expensesList = …
    context = 
        'categoriesList': categoriesList,
        'expensesList': expensesList,
        'categoriesExpenses': zip(categoriesList, expensesList)
    
    return render(request, 'some_template.html', context)

在模板中,你可以枚举categoriesExpenses:

% for categories, expenses in categoriesExpenses %
    …
% endfor %

话虽如此,如果categoriesListcategoriesexpenses 列表,则可能有更优雅和更有效的方法来执行此操作。如果从Expense 模型到Category 存在ForeignKey,您可以加载这些并遵循关系。

【讨论】:

我现在应该知道zip功能了,非常感谢,我很感激。

以上是关于Django 在模板中使用两个不同的数据集填充表的主要内容,如果未能解决你的问题,请参考以下文章

当查询被填充时,有没有办法在 Django 模板中呈现大型查询集?

在 Django 中使用两个以不同方式格式化的查询集进行分页

如何比较 Django 模板中的两个查询集?

ChartJs,如何在折线图中的两个数据集之间获得不同的颜色填充?

Django:如何在 ajax 中返回模型表单集并在模板中使用

Django模板:在不同的列表上组合2个循环