django에서 annotate를 사용하는 방법

1493 단어 django
annotate 사용 방법: 때때로 우리는 두 개의 표를 연결하여 조회를 해야 한다. 예를 들어 블로그에 두 개의 모델, 하나의 문장 모델, 하나의 분류 모델, 분류 모델은 문장의 분류 필드의 외부 키이다. 만약에 우리가 각 분류의 문장 수량을 조회해야 한다면 가장 간단한 방법은 모든 분류를 먼저 찾아내는 것이다.
categories = NewsCategory.objects.all()

글 모형의 이름이 뉴스이고 분류마다django가 자동으로 속성category를 추가합니다.news_set, 이 방법은 대응하는 문장을 분류한 다음category를 얻을 수 있습니다.news_set.count () 는 분류마다 몇 개의 문장이 있는지 얻을 수 있습니다.그러나 이 방법은 매우 저급하다. 만약에 고급스럽게 하려면 검색 성능이 더욱 최적화되고annotate가 알아야 한다.
                  。

categories = NewsCategory.objects.annotate(num_count=Count('news'))

annotate에는 categories (Queryset) 에 속성이 추가되어 있습니다. Queryset의 모든 대상에 이러한 속성이 있습니다. 현재 분류된 글의 수량을 조회할 수 있습니다: category.num_count()
      
     :
	def cms_news_category(request):
		categories = NewsCategory.objects.all()
		context = {
			'categories': categories
		}
		return render(request, 'cms/category.html', context=context)
	
	  category.html    :
		{% for category in categories %}
			{{ category.name }}
			{{ category.news_set.count }}
		{% endfor %}

annotate 사용 후 코드:
	def cms_news_category(request):
		categories = NewsCategory.objects.annotate(num_count=Count('news'))
		context = {
			'categories': categories
		}
		return render(request, 'cms/category.html', context=context)
	  category.html    :	
		{% for category in categories %}
			{{ category.name }}
			{{ category.num_count }}
		{% endfor %}

좋은 웹페이지 즐겨찾기