【发布时间】:2019-04-16 21:49:20
【问题描述】:
我有一个充满有效日期费率的模型。这些费率上值得注意的字段是name、type、effective_date 和rate。
我需要能够过滤修改器费率以仅获取特定类型和特定日期之前的费率。
ModifierRate.objects.filter(
type=settings.MODIFIER_RATE_TYPES_TAX,
effective_date__lte=date)
该查询可能返回具有相同name 和type 的费率,因此我需要它们在这两个字段上有所不同。
.distinct('name', 'type')`
但是,如果有重复的名称和类型,我需要最新的。
.order_by('-effective_date')
毕竟我需要汇总这些对象的费率。
.aggregate(rate__sum=Coalesce(Sum('rate'), 0))['rate_sum']
如果我尝试将所有这些东西粉碎在一起,我会得到
raise NotImplementedError("aggregate() + distinct(fields) not implemented.")
NotImplementedError: aggregate() + distinct(fields) not implemented.
我已经在谷歌上搜索了一段时间,有很多类似的问题使用 values_list 和 annotate,但我认为这不是我想要的。
我如何获得某个日期之前在使用最新不同费率的字段名称和类型上不同的费率总和?
谢谢。
【问题讨论】: