我有多个查询集,看起来像:
NAME1 | VALUE_FROM_COLUMN_1
NAME1 | VALUE_FROM_COLUMN_2
NAME1 | VALUE_FROM_COLUMN_3
除了使用list(chain(q1, q2, q3))
函数之外,我如何使这个设计变平,因为它显示如下:
NAME1 | VALUE_FROM_COLUMN_1 | |
NAME1 | | VALUE_FROM_COLUMN_2 |
NAME1 | | | VALUE_FROM_COLUMN_3
我想要这个:
NAME1 | VALUE_FROM_COLUMN_1 | VALUE_FROM_COLUMN_2 | VALUE_FROM_COLUMN_3
正如@Willem货车Onsem建议的那样,我试图在下面详细说明:
list1 = OrderElement.objects.filter(ordel_order_fk_id__in=Order.objects.filter(ord_status=2, ord_data_real__lte=datetime.now() + timedelta(days=7)).
values_list('ord_id', flat=True)).values('ordel_name').annotate(total1=Sum('ordel_ilosc')).order_by()
list2 = OrderElement.objects.filter(ordel_order_fk_id__in=Order.objects.filter(ord_status=2, ord_data_real__lte=datetime.now() + timedelta(days=14), ord_data_real__gte=datetime.now() + timedelta(days=7)).
values_list('ord_id', flat=True)).values('ordel_name').annotate(total2=Sum('ordel_ilosc')).order_by()
基本上我通过他们的父母日期过滤位置。这给了我输出:
list1:
ordel_name: OrderElementName1, total1: 50
...
list2:
ordel_name: OrderElementName1, total2: 100
...
型号:
class Order(models.Model):
ord_id = models.AutoField(unique=True, primary_key=True)
ord_data_real = models.DateField()
class OrderElement(models.Model):
ordel_id = models.AutoField(unique=True, primary_key=True)
ordel_order_fk = models.ForeignKey(Order, on_delete=models.CASCADE)
ordel_name = models.CharField(max_length=100, unique=False)
ordel_qty = models.IntegerField(unique=False)
1条答案
按热度按时间z8dt9xmd1#
我们可以使用单个查询集:
这将使字典与
ordel_nazwa
作为关键字,和两个额外的关键字total1
和total2
的数量ordel_ilosc
的前七天和前14天分别。