2
我已經寫了一個小博客腳本作爲django應用程序。我認爲在單篇文章中我有很多要求。但我不知道如何減少它們。我如何在django視圖中優化數據庫查詢集
我得到所有的博客文章與一個查詢。結果我得到一個查詢集。有了這個,我做了一些更多的行動。但是對於每一個動作,django debbuger工具欄告訴我,它一次又一次地觸擊數據庫。
這裏是視圖:
def single(request, slug):
articles = Article.objects.all()
article = articles.filter(slug=slug)[0]
newer_article = list(articles.filter(release_date__gt=article.release_date))[-1:]
older_article = articles.filter(release_date__lt=article.release_date)[:1]
return render_to_response(
'article/single%s.html' % extend,
locals(),
RequestContext(request)
)
- 用頭撞我得到的當前文章。
- 第二和第三命中是讓文章
是之前和之後有一個解決方案只得到貝一個數據庫命中相同的結果?
結果:
只有1查詢新版本。
def single(request, slug):
articles = list(Article.objects.all())
for i, a in enumerate(articles):
if a.slug == slug:
article = a
if (i-1) >= 0:
newer_article = articles[i-1]
else:
newer_article = None
if (i+1) < len(articles):
older_article = articles[i+1]
else:
older_article = None
break
return render_to_response(
'article/single%s.html' % extend,
locals(),
RequestContext(request)
)
你還需要添加一些錯誤的情況下,檢查你正在尋找具有最早或最新的發佈日期的文章:) – abeinstein
真棒,謝謝。 :)和@abeinstein,謝謝,我會牢記在心。 – danbruegge