gpt4 book ai didi

python - 如何迭代 Django 模板标签中的 ManyToMany 字段?

转载 作者:行者123 更新时间:2023-12-05 01:53:55 25 4
gpt4 key购买 nike

我有一个包含多对多字段的对象。我试图在 Django 模板中迭代这个字段,但显然我不能。让我先给你看代码。

模型.py:

class Book(models.Model):
title = models.CharField(max_length = 100, blank=True)
category = models.ManyToManyField(Category)

def __str__(self):
return self.title

views.py:

def book_list(request):
books = Book.objects.all().order_by('-pk')

context = {
'books' : books,
}
return render(request, 'contents/book_list.html', context)

模板文件:

{% for b in books %}
<div>
{{b.title}}
{% for cat in b.category %}
{{cat}}
{% endfor %}
</div>
{% endfor %}

现在我得到了 'ManyRelatedManager' object is not iterable 错误。如何迭代该字段并显示每个对象中的所有 类别

最佳答案

这是因为如果你调用 b.category 它只返回关系对象。要获取其值(category 对象),您必须添加 .all。像这样:

{% for b in books %}
<div>
{{ b.title }}
{% for cat in b.category.all %}
{{cat}}
{% endfor %}
</div>
{% endfor %}

顺便说一句,我还将 c.title 更改为 b.title,因为我假设您想要这本书的标题,而不是来自全局的标题。

关于python - 如何迭代 Django 模板标签中的 ManyToMany 字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70927390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com