class Price(models.Model):
product = models.ForeignKey(Product)
date = models.DateField()
amount = DecimalField()
Имейте модель, где хранятся суммы для многих продуктов на многие даты (дата может быть в будущем).Выберите только последние результаты для каждого уникального внешнего ключа
Пример:
на 1.01.2013 - Product1 сумму 10 $ (т.е. это значение от 1,01 до 11,01)
на 12.01.2013 - Product1 сумму $ 12
на 10.05.2013 - Product1 сумму $ 17
на 11.06.2013 - сумма Product1 14 $на 18.02.2013 - product2 сумму $ 3
на 12.06.2013 - product2 сумму 15 $на 25.04.2013 - Product3 сумму $ 11
на 17.06.2013 - product3 сумму 13 $
DB Backend-MySQL
Как можно выбрать выберите фактическое количества (и дату введенное эту суммы) для каждого продукта с датой < = текущая_дат и значение суммы во введенном пользователем диапазоне
Например. на дату 14.05.2013 и количественном диапазоне 10-20 $ нужно привести только два объекта в QuerySet:
Product1 10.05.2013 17$
Product3 25.04.2013 11$
UPD. Заинтересованное оптимальное решение, не нужно много SQL-запросов и не нужно в коде оценивать цикл всех записей.
[ 'range'] (https://docs.djangoproject.com/en/dev/ref/models/querysets/#range) лучше подходит для этого. –
Это неправильно. В этом варианте я не получаю последние цены на дату для каждого продукта. Мне нужна специальная запись, тогда вам нужно только два объекта в наборе запросов. – nnmware
Я отредактировал свой ответ для вашего замечания, попробуйте сейчас. – WebPal