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 %
。
【问题讨论】:
具体情况如何?categoriesList
和 expenseList
是否保证长度相同?您将如何渲染数据?
是否也可以将查询集更改为列表。然后也许使用 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 %
话虽如此,如果categoriesList
是categories
的expenses
列表,则可能有更优雅和更有效的方法来执行此操作。如果从Expense
模型到Category
存在ForeignKey
,您可以加载这些并遵循关系。
【讨论】:
我现在应该知道zip功能了,非常感谢,我很感激。以上是关于Django 在模板中使用两个不同的数据集填充表的主要内容,如果未能解决你的问题,请参考以下文章
当查询被填充时,有没有办法在 Django 模板中呈现大型查询集?
在 Django 中使用两个以不同方式格式化的查询集进行分页
ChartJs,如何在折线图中的两个数据集之间获得不同的颜色填充?