【问题标题】:Django admin anotate not work with change list view querysetDjango admin annotate 不适用于更改列表视图查询集
【发布时间】:2019-09-15 12:36:30
【问题描述】:

我需要为按年、月和类别分组的记录列表创建摘要视图。当我使用模型管理器并对其进行注释时,它工作正常,并且正确创建了摘要。但是,如果我使用changelist_view 请求对象的查询集,它也会复制未分组的记录。请参阅下面的两个代码清单。

正确值:

Bill.objects.values_list('category__name', 'year', 'month').annotate(Sum('amount'), due=Sum(F('amount') - F('paid_amount'), output_field=models.FloatField()))

<QuerySet [('Insurance', '2019', 'FEB', Decimal('35200.2300000000'), 25200.230000000003), ('Telephone', '2019', 'AUG', Decimal('3353.54000000000'), -23.0), ('Telephone', '2019', 'JUL', Decimal('200'), 200.0)]>

与 changelist_view 查询集一起使用时不正确:

qs = response.context_data['cl'].queryset
extra_context['summary'] = qs.values_list('category__name', 'year', 'month').annotate(
            Sum('amount'), due=Sum(F('amount') - F('paid_amount'), output_field=models.FloatField()))

print(extra_context['summary'])

<QuerySet [('Telephone', '2019', 'AUG', Decimal('1677'), -23.0), ('Telephone', '2019', 'JUL', Decimal('500'), 500.0), ('Telephone', '2019', 'AUG', Decimal('1676.54000000000'), 0.0), ('Telephone', '2019', 'JUL', Decimal('-300'), -300.0), ('Insurance', '2019', 'FEB', Decimal('35200.2300000000'), 25200.230000000003)]>

上面看到 AUG 2019 分组不正确。

【问题讨论】:

    标签: django django-models django-admin


    【解决方案1】:

    当与查询集上的order_by 函数一起使用时,这可以正常工作。

    【讨论】:

      猜你喜欢
      • 2017-02-24
      • 2011-10-12
      • 2015-10-17
      • 2011-01-15
      • 1970-01-01
      • 1970-01-01
      • 2016-02-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多