간단한 가격 추적 프로그램을 개발 중입니다. 저는 웹 애플리케이션 디자인에 익숙하지 않으며 경험 많은 의견을 사용할 수 있습니다. 내 응용 프로그램은 고유 한 제품 SKU를 통해 하루에 수십만 개의 제품에 대한 가격을 인상합니다. 각 SKU를 들어 응용 프로그램 오버 헤드 디자인 결정 : 데이터베이스 행에 필요한 값을 저장하거나 쿼리 세트에서 동적으로 찾으십시오.
내가 보여줄 수 있어야합니다 :- 모든 시간 높은 가격을
- 모든 시간을 저렴한 가격
- 평균 가격
내 API는 새로운 SKU를 기록 데이터베이스에 가격 나는이 세 가지 값을 파악하고 최신/현재 가격 행에 쓸 수 있습니다. 이것은 내 View에서 Django Queryset을 사용하여 쿼리 및/또는 계산 및 표시하는 것보다 나은 설계 결정입니까?
편집 :
물론, 현재 def get_context_data
와 장고 클래스 기반 뷰에 공급하고있다. 나는 집계 MIN을 사용하고 있지 않다
context['high_price'] = prices.order_by('price').last()
context['low_price'] = prices.order_by('-price').last()
context['avg_price'] = prices.aggregate(average=Avg('price'))
주/MAX는 나뿐만 아니라 내가 (가격 모델은 '가격의 날짜'와 '가격의 컬럼으로 구성되어 전체 가격 행에 필요한 각각의 가격과 날짜를 필요로하는 ').
원래 질문은 여전히 의미합니다. 나는 새로운 가격을 가져올 때마다이 값을 높게/낮게/평균으로 써야 하나? 여기에 내가 (가장 높은 모든 시간 가격 예) 그렇게 할 수있는 방법은 다음과 같습니다
if product.high_price is None or (price.value is not None and price.value >= product.high_price.value):
product.high_price = price
코드를 공유 할 수 있습니다. AVG 용 django에서 집계를 사용하면 SUM – Vaibhav
확실히 OP가 편집됩니다. – adamkost
당신의 기준은 무엇입니까? 성능 병목 현상이 있습니까? 벤치마킹 해 보셨습니까? Django 디버그 도구 모음은 데이터베이스 쿼리를 검사하고 프로파일 링하는 데 사용할 수 있습니다. https://github.com/jazzband/django-debug-toolbar –