2013-05-12 2 views
-1
class Price(models.Model): 
    product = models.ForeignKey(Product) 
    date = models.DateField() 
    amount = DecimalField() 

여러 날짜 (날짜가 미래의 시간 임)에 많은 제품에 대해 저장된 금액이있는 모델이 있습니다.모든 고유 한 외래 키에 대한 최신 결과 만 선택하십시오.

예 :
2013년 1월 1일에 - 제품 1 량이 10 개 $ 2013년 1월 12일에 (즉, 11.01-1.01에서이 값 )
- 제품 1 량이 12 2013년 5월 10일에 $
- 제품 1 량이 17 $
2013년 6월 11일에 - 제품 1 량에 $ 14 2013년 2월 18일

- 제품 2 량에 $ 3 2013년 6월 12일
- 제품 2 양에 $ 15 2013년 4월 25일

- 제품 3 량 11 $ 01,235,095,299,392,268 2013년 6월 17일에 103,210 - 제품 3 금액 13 $

DB 백엔드 - MySQL의

날짜 모든 제품에 대한 (이 금액의 입력 및 날짜)를 선택 실제 양을 선택할 수 있습니다 어떻게

< = CURRENT_DATE 및 사용자 입력 범위의 금액 값
예 : 날짜 2013년 5월 14일 및 금액 범위에서 10 ~ 20 $ 은 검색어 세트에서 두 객체와 결과 필요 :

Product1 10.05.2013 17$ 
Product3 25.04.2013 11$ 

UPD를. 관심이 솔루션, 많은 SQL 쿼리가 필요하지 않으며 모든 레코드의 코드를 평가할 필요가 없습니다.

답변

2

날짜 필드에 대해 lt (작음) 및 gt (더 큰) 쿼 리셋을 사용할 수 있습니다.
장고 문서 : https://docs.djangoproject.com/en/dev/ref/models/querysets/#gt

from datetime import date 

products = Product.objects.filter(price__date__lte=date.today(),\ 
            price__amount__range=(start, end).distinct() 
+0

['range' (https://docs.djangoproject.com/en/dev/ref/models/querysets/#range)이 더 적합하다. –

+0

잘못되었습니다. 이 변형에서 모든 제품의 최신 가격을 알 수 없습니다. 나는 특별한 쓰기가 다음 queryset에 두 개체가 필요합니다. – nnmware

+0

귀하의 의견에 대한 답을 편집했습니다. 지금 시도하십시오. – WebPal

관련 문제