У меня есть модель
class Model(BaseModel):
status = models.CharField(verbose_name='Status', max_length=255,null=True, blank=True)
category = models.CharField(verbose_name='Service Category', max_length=255,null=True, blank=True)
order_no = models.CharField(verbose_name='Order No', max_length=255, null=True, blank=True)
item = models.CharField(verbose_name='Item', max_length=255,null=True, blank=True)
operation_date = TimestampField(auto_now_add=False,null=True, blank=True)
user_name = models.CharField(verbose_name='User Name', max_length=255,null=True, blank=True)
service_status = models.CharField(verbose_name='Service Status', max_length=255,null=True, blank=True)
status_message = models.TextField(verbose_name='Status Message', max_length=255,null=True, blank=True)
В этой таблице выше я хочу вычислить категорию, общий объем заказа, тип заказа.
Но проблема заключается в том, что значения типа order_type отсутствуют в таблице выше ... нам придется рассчитывать вручную.
Пусть, если один Номер заказа равен 202025, и он находится в двух категориях, таких как cat1, cat2, мы говорим, что order_type равен Composite * 1011. * иначе это будет один
ex:
Order No category
| 280436 | cat1 |
| 280436 | cat2 |
| 280435 | cat1 |
| 280435 | cat3 |
| 280435 | cat4 |
| 280434 | cat1 |
, тогда мы говорим, что Заказы № 280436 и 280435 являются составными заказами.
ТАК выход должно выглядеть так:
Category order type total order total success orders
cat1 single 10 8
cat2 composite 8 5
Как мы можем смоделировать запрос Django для требуемого вывода?
Approche1
queryset = Model.objects.values('category', 'order_type').annotate(
total_orders=Count('order_type'), total_success_order=Count('service_status', filter=Q(service_status='success'))).order_by()
Но Как получить Тип заказа ???
Можете ли вы, ребята, предложить какие-либо решения?
Спасибо