Django как сравнить вычисляемые поля в запросе
Можно ли получить данные из другой таблицы в запросе, сравнивая вычисленные значения?
Например, вычислить минимальное и максимальное значения цены и получить Url's
к ним из другой таблицы.
Мои модели выглядят следующим образом:
class Product(models.Model):
id = models.CharField(..)
price = models.FloatField(..)
url = models.CharField(..)
.....
class ProductHistory(models.Model):
ProductID = models.ForeignKey(Product, on_delete=models.CASCADE, to_field='ProductID',
db_column='ProductID')
price = models.FloatField(..)
date = models.DateTimeField(..)
Мой запрос выглядит следующим образом
query = HistoryPrice.objects.filter(ProductID=products).filter(query_price) \
.annotate(dt=Trunc('StartDate', frequency)) \
.values('dt') \
.annotate(max_price=Max('Price'), min_price=Min('Price')) \
.order_by('dt')
Но я хочу получить Url
из таблицы Product
для каждого max_price
и min_price
. Как я могу этого добиться
Я пытаюсь сделать так
for row in query:
r = Product.object.filter(~Q(row['max_price'])).values_list('Url')
но если max_price
будет повторяться в таблице, то это не будет иметь смысла и запрос будет повторяться N количество раз