这应该很容易......我参加了一个课程以及这种结构的方式,view.py文件可以单独用于此测验 - 它更像是一个挑战。好的,所以请求是这样的: "现在,创建一个名为article_list的视图,选择所有文章实例并返回一个HttpResponse,如"有5篇文章。"请务必使用Article查询集的len()来获取文章数。"
作为参考,第一部分有效。无论如何,view.py文件看起来像这样(第一部分是我导入文章的地方......猜测我不需要渲染导入。):
from django.http import HttpResponse
from django.shortcuts import render
from .models import Article
# Write your views here
def article_list(request):
articles = Article.objects.all()
article_count = articles.len()
output = "There are {} articles.".format(str(article_count))
return HttpResponse(output)
我不确定len函数和/或str函数是否应该像这样链接,或者它们是否应该包装对象。我试过把articles.len()。str(),但似乎没有用。
在此先感谢您的帮助,
布鲁斯
答案 0 :(得分:4)
你可以试试这个:
iframe
len是一个调用对象的函数,format方法已经为你调用了str方法。
答案 1 :(得分:4)
使用.all()
来计算记录数量会引入unnecessary overhead:
如果您只需要确定集合中的记录数(和 不需要实际的对象),处理一个更有效率 使用SQL的SELECT COUNT(*)计算数据库级别。 Django的 正是出于这个原因提供了count()方法。
使用.count()
直接从数据库中获取count
:
articles_count = Article.objects.count()
output = "There are {} articles.".format(article_count)
这是一种普遍接受的计算记录的方法,除非实际需要记录实例,或者,如果有特定要求,则视情况而定:
请务必使用文章查询集的
len()
来获取文章数。
考虑到问题是如何陈述的,@ Andoni的答案应该被接受。
答案 2 :(得分:1)
注意:如果您只想确定集合中的记录数,请不要在QuerySets上使用len()。使用SQL的SELECT COUNT(*)来处理数据库级别的计数效率要高得多,而Django正是出于这个原因提供了count()方法。见下面的count()。