Как сделать вычисление полей из разных моделей Django?
Теперь есть три таблицы:
class Product(models.Model):
sku = models.CharField(max_length=200, unique=True)
name = models.CharField(max_length=200, null=True)
class HistoricalData(models.Model):
product = models.ForeignKey(Product, on_delete=models.CASCADE)
date = models.DateTimeField()
demand_sold = models.IntegerField(default=0)
class ForecastData(models.Model):
product = models.ForeignKey(Product, on_delete=models.CASCADE)
date = models.DateTimeField()
demand_sold = models.IntegerField(default=0)
Мне нужно сравнить исторические и прогнозные данные для списка товаров и рассчитать коэффициент точности. Формула выглядит следующим образом: ForecastData.demand_sold * 100/HistoricalData.demand_sold
Текущее решение заключается в итерационном просмотре наборов данных истории и прогноза и вычислениях для demand_sold
products = Product.objects.filter(...)
queryset_hist = HistoricalData.objects.filter(product__in=products)
queryset_forecast = ForecastData.objects.filter(product__in=products)
Мне интересно, есть ли какое-нибудь элегантное решение для вычисления поля из разных Django Models. (Например, Join?)
Пробовали ли вы сделать что-то вроде этого:
products = Product.objects.all()
for p in products: # p is an object of class Product
one_historical_record = HistoricalData.objects.filter(product=p)
one_forecast_record = ForecastData.objects.filter(product=p)
forecast_for_product_p = one_forecast_record.demand_sold * 100/one_historical_record.demand_sold
Это то, что вы ищете?