如何计算index.html中与每本书关联的读者总数?在index.html中,第一个循环遍历reader并提供与每个reader关联的图书数量的总和。第二个循环不计算读者已阅读的图书数量(我理解原因)。
我正在尝试计算与每本书关联的读者总数。是否有方法在index.html中完成此任务?或者应该在www.example.com中完成此views.py??或者应该在www.example.com中设置不同的关系models.py?
我一直在谷歌搜索,但没有找到答案。
models.py
class Book(models.Model):
title = models.CharField(max_length=100)
class Reader(models.Model):
name = models.CharField(max_length=100)
book_read = models.ManyToManyField(Book)
views.py
def index(request):
all_readers = Reader.objects.all()
all_books = Book.objects.all()
context = {
"all_readers": all_readers,
"all_books": all_books,
}
return render(request, "testing/index.html", context)
index.html
{% for reader in all_readers %}
<h3>{{ reader.book.all.count }}</h3>
{% endfor %}
{% for book in all_books %}
<h3>{{ book.reader.all.count }}</h3>
{% endfor %}
1条答案
按热度按时间nbnkbykc1#
要计算index.html中每本书的读者总数,可以使用Django ORM中的Count函数来获取每本书的读者数量。
下面是如何在模板中执行此操作的示例:
这将显示与每本书相关联的阅读器数量。
或者,也可以使用view函数中的annotate方法向每个book对象添加num_readers字段,然后可以使用**{{ book.num_readers }}**语法在模板中显示该字段:
浏览次数.py:
index.html:
这还将显示与每本书关联的读者数量。
一般建议尽量在view函数中进行数据处理,并将处理后的数据传递给模板,而不是尝试在模板本身进行数据处理,这样有助于保持模板代码简洁易懂,也便于调试可能出现的任何问题。