[英]What am I doing wrong with my function within this django view?
這應該很容易...我正在上一門課程,並且以結構化的方式將view.py文件單獨用於本測驗的目的-這更像是挑戰。 好的,請求是這樣的:“現在,創建一個名為article_list的視圖,該視圖選擇所有Article實例,並返回HttpResponse之類的消息,例如“有5條文章。”請確保使用Article查詢集的len()來獲取文章。”
作為參考,第一部分起作用。 無論如何,view.py文件看起來像這樣(第一部分是我導入Article的位置……猜想我不需要渲染導入。):
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()放入,這似乎沒有用。
預先感謝您的幫助,布魯斯
您可以嘗試以下方法:
article_count = len(articles)
output = "There are {} articles.".format(article_count)
len是您在對象上調用的函數,而format方法已經為您調用了str方法。
僅使用.all()
來計算記錄數會帶來不必要的開銷 :
如果您只需要確定集合中的記錄數(而不需要實際的對象),則使用SQL的SELECT COUNT(*)在數據庫級別處理計數將更加高效。 正是出於這個原因,Django提供了count()方法。
使用.count()
直接從數據庫獲取count
:
articles_count = Article.objects.count()
output = "There are {} articles.".format(article_count)
除非實際需要記錄實例,或者如果有特殊要求(如您的情況),則這是一種對記錄進行計數的公認方法:
確保使用Article查詢集的
len()
來獲取文章數。
考慮到問題的表達方式,@ Andoni的答案應該被接受。
注意:如果您只想確定集合中的記錄數,則不要在QuerySets上使用len()。 使用SQL的SELECT COUNT(*)在數據庫級別處理計數更為有效,而Django正是出於這個原因提供了count()方法。 請參閱下面的count()。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.