Как перегруппировать результат по полям?
Мне нужно сделать просмотр "статистики" по некоторым проданным товарам. К сожалению, я теряюсь с annotate, aggregate, не могу получить желаемый результат.
У меня есть 2 модели:
class SaleProduct(models.Model):
name = models.CharField(_('Name'), max_length=80)
price = models.FloatField(_('price'))
unit = models.CharField(_("unit"), max_length=20, default="€")
tva = models.FloatField(_('tva'))
dlc = models.DateField('dlc')
class Sale(models.Model):
products = models.ManyToManyField(
"sale.SaleProduct",
related_name="sale_saleproducts",
verbose_name=_("Products"),
blank=True
)
paiement_method = models.CharField(_("paiement method"), max_length=255)
sale_ok = models.BooleanField(_("status"), default=True)
total = models.FloatField(_("Total"))
На фронтенде у меня есть таблица данных с 6 колонками:
- Общее количество
- Общее количество
- Название (продукта)
- DLC
- Итого за DLC
- Общее количество на DLC
Первое, что я не могу сделать: сгруппировать продукты по названию и DLC.
Действительно, каждая строка таблицы должна соответствовать продукту с именем и уникальным DLC.
Я могу с помощью queryset.distinct("name", "dlc"), но после distinct я не могу использовать annotate.
После правильной фильтрации этого запроса в первом столбце вычисляется сумма цен продуктов, имеющих одинаковое название, независимо от DLC. Второй столбец - это подсчет продуктов с одинаковым названием независимо от DLC.
В 3-й колонке - название продукта. 4-й столбец - DLC
5-й столбец - это сумма цен продуктов с одинаковым названием и одинаковым DLC. 6-й столбец - это количество продуктов с одинаковым названием и одинаковым DLC.