Python Django-按最新日期/列检索唯一行
我有下表:Python Django-按最新日期/列检索唯一行,python,django,orm,Python,Django,Orm,我有下表: class AccountData(models.Model): id = models.BigIntegerField(primary_key=True) date = models.DateField() last_update = models.DateTimeField() account = models.ForeignKey('Account', models.DO_NOTHING, db_column='account', related
class AccountData(models.Model):
id = models.BigIntegerField(primary_key=True)
date = models.DateField()
last_update = models.DateTimeField()
account = models.ForeignKey('Account', models.DO_NOTHING, db_column='account', related_name="values")
value = models.DecimalField(max_digits=65535, decimal_places=65535, blank=True, null=True)
给定一个ID的查询集/列表(未知数量有多少个ID,可能为无/0)
是否有方法获取每个帐户的最新行,然后对值求和
我真正要做的是检索每个帐户的最新行
我知道我可以通过以下操作获得给定查询集中的帐户:
accounts = [1, 4, 65]
AccountData.objects.filter(account__in=accounts)
我只需要弄清楚如何才能得到“日期”尽可能接近“现在”的行。因此会产生唯一的行(每个帐户只有一行)使用order by和distinct组合来获得问题的解决方案
AccountData.objects.order_by('-date').distinct('account_number')
要进一步求和,请使用聚合
from django.db.models import Sum
AccountData.objects.order_by('-date').distinct('account_number').aggregate(sum=Sum('value'))['sum'] or 0
.order_by()
和.first()
@bdoubleu这不就是从表中抓取一行吗?我需要多行,只要帐户是唯一的。你可以尝试使用Sum的注释函数,请参阅本页,也许可以帮助你。非常感谢你!虽然我无法在同一行上进行聚合,但单独进行聚合也解决了这个问题。