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 количество раз

Вернуться на верх