kyo*_*ore 5 django django-models django-queryset
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()
Run Code Online (Sandbox Code Playgroud)
当我查询模型时:
Channel.objects.annotate(pay=Sum('contracts__fee'))
它返回:75000。它是正确的,但是当我这样查询时:
Channel.objects.annotate(pay=Sum('contracts__fee'))
.annotate(paid=Sum('contracts__payments__value'))
Run Code Online (Sandbox Code Playgroud)
它返回:pay: 96000,paid: 33000。如您所见,薪酬已更改。这里发生了什么?我读了票#10060但没有运气。
使用两个查询来获得所需的结果:
Channel.objects.annotate(pay=Sum('contracts__fee'))
Run Code Online (Sandbox Code Playgroud)
和
Channel.objects.annotate(paid=Sum('contracts__payments__value'))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
389 次 |
| 最近记录: |