私信  •  关注

Sabil

Sabil 最近创建的主题
Sabil 最近回复了
3 年前
回复了 Sabil 创建的主题 » 如何迭代两个django模型

我假设你有相似数量的元素 清单、标题、设置、修订、规格和审查 .请记住,如果元素的数量不同,那么它将至少计算一个。

请在下面查看 zip 为更好的理解树立榜样。

ZIP示例:

inventory = [1, 2, 3, 4]
header = [5, 6, 7, 8]
setup = [9, 10, 11, 12]
revision = [13, 14, 15, 16]
spec = [17, 18, 19, 20]
review = [21, 22, 23, 24, 25, 26]

zippedItems = zip(inventory, header, setup, revision, spec, review)

for inventory, header, setup, revision, spec, review in zippedItems:
    print(f'inventory: {inventory} - header: {header} - setup: {setup} - revision: {revision} - spec: {spec} - review: {review}')

输出:

inventory: 1 - header: 5 - setup: 9 - revision: 13 - spec: 17 - review: 21
inventory: 2 - header: 6 - setup: 10 - revision: 14 - spec: 18 - review: 22
inventory: 3 - header: 7 - setup: 11 - revision: 15 - spec: 19 - review: 23
inventory: 4 - header: 8 - setup: 12 - revision: 16 - spec: 20 - review: 24

从输出中可以看到,它没有打印审阅列表的最后一个值,因为这些值不在4的范围内。

您可以保持此代码的原样:

inventory = Inventory.objects.all()
header = Header.objects.all()
setup = Setup.objects.all()
revision = Revisions.objects.all()
spec = SpecificationDetails.objects.all()
review = Reviewers.objects.all()

zippedItems = zip(inventory, header, setup, revision, spec, review)
context = {
        'zippedItems':  zippedItems

}
return render(request, 'crud/dashboard.html', context)

你对HTML部分有问题。应该是这样的:

{% for inventory, header, setup, revision, spec, review in zippedItems %}
    {{ forloop.counter }}
    {{ inventory.model_field_name }}
    {{ header.model_field_name }}
    {{ setup.model_field_name }}
    {{ revision.model_field_name }}
    {{ spec.model_field_name }}
    {{ review.model_field_name }}
{% endfor %}

如果您仍然面临任何问题,请告诉我。:)