【发布时间】:2020-06-23 03:33:16
【问题描述】:
models.py 看起来像这样
class Channel(Model):
name = CharField()
class Contract(Model):
channel = ForeignKey(Channel, related_name='contracts')
fee = IntegerField()
class ContractPayment(Model):
contract = ForeignKey(Contract, related_name='payments')
value = IntegerField()
当我查询模型时:
Channel.objects.annotate(pay=Sum('contracts__fee'))
返回:75000。它是正确的,但是当我这样查询时:
Channel.objects.annotate(pay=Sum('contracts__fee'))
.annotate(paid=Sum('contracts__payments__value'))
它返回:支付:96000,支付:33000。如您所见,pay 已更改。这里发生了什么?我读了票#10060 但没有运气。
【问题讨论】:
-
Hopefull 在 Django 3.0 中为
Sum添加了一个标志distinct。 -
我试过
distinct,但Contract模型有很多相同的费用,所以我不能在这里使用distinct。 -
是的。那是不同的问题
-
可以接受两次查询吗?
标签: django django-models django-queryset