在我的应用程序中,有请求物品的用户和捐赠这些物品的用户。我想获取所有捐款最多的用户。
这些是我的模型:
class ItemRequest(models.Model):
item_type = models.ForeignKey(ItemType)
description = models.CharField(max_length=1024, default='', blank=True)
quantity = models.IntegerField()
user = models.ForeignKey(User)
completed = models.BooleanField(default=False)
completed_dt = models.DateTimeField()
class Donation(models.Model):
item_request = models.ForeignKey(ItemRequest, related_name='donation')
user = models.ForeignKey(User, related_name='donor')
quantity_offered = models.IntegerField(default=0)
quantity_accepted = models.IntegerField(default=0)
更具体地说,我想获取“完成”捐赠最多的前 5 位捐赠者(其中item_request.completed=True)
。我可以通过一个查询来完成此操作吗?
(User.objects
.filter(donor__item_request__completed=True)
.annotate(c=Count('donor'))
.order_by('-c')[:5])
你可能应该命名你的Donation.user.related_name
donation
too.
那么就会是
(User.objects
.filter(donation__item_request__completed=True)
.annotate(c=Count('donation'))
.order_by('-c')[:5])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)