Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django queryset获取相关字段名以筛选聚合和_Django_Django Queryset - Fatal编程技术网

Django queryset获取相关字段名以筛选聚合和

Django queryset获取相关字段名以筛选聚合和,django,django-queryset,Django,Django Queryset,在my models.py中,我有以下示例: **Orders** id product total_gross **Payments** id status order_ID 我正在创建以下查询集,以便在付款状态为“已确认”时获得总金额。因此,我使用以下方法: week_order_total = Order.objects.prefetch_related('payments').filter(created__range=(week_start_date, week_end_date

在my models.py中,我有以下示例:

**Orders**
id
product
total_gross


**Payments**
id
status
order_ID
我正在创建以下查询集,以便在付款状态为“已确认”时获得总金额。因此,我使用以下方法:

week_order_total = Order.objects.prefetch_related('payments').filter(created__range=(week_start_date, week_end_date)).filter(payments.status='confirmed').aggregate(Sum('total_gross'))['total_gross__sum']
我收到以下错误:

关键字不能是表达式


筛选
付款。状态
无效。您可以使用两个连续的下划线(
\uu
)对相关模型进行筛选:

week\u order\u total=Orders.objects.filter(
创建范围=(周开始日期、周结束日期),
付款\状态='已确认'
).aggregate(总和('total_gross'))['total_gross_Sum']
使用没有多大意义,因为只有在这里获得
订单
对象,并且希望在Django/Python级别访问相关对象时,
.prefetch\u related
才有效。但这里是在数据库中聚合,因此Django将在SQL查询中移动聚合


注意:通常情况下,Django模型的名称为单数,因此是
订单
而不是
订单


筛选
付款。状态
无效。您可以使用两个连续的下划线(
\uu
)对相关模型进行筛选:

week\u order\u total=Orders.objects.filter(
创建范围=(周开始日期、周结束日期),
付款\状态='已确认'
).aggregate(总和('total_gross'))['total_gross_Sum']
使用没有多大意义,因为只有在这里获得
订单
对象,并且希望在Django/Python级别访问相关对象时,
.prefetch\u related
才有效。但这里是在数据库中聚合,因此Django将在SQL查询中移动聚合


注意:通常情况下,Django模型的名称为单数,因此是
订单
而不是
订单


付款。状态付款。状态
week_order_total = Orders.objects.filter(
    created__range=(week_start_date, week_end_date),
    payments__status='confirmed'
).aggregate(Sum('total_gross'))['total_gross__sum']