Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django-按最新日期/列检索唯一行_Python_Django_Orm - Fatal编程技术网

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的注释函数,请参阅本页,也许可以帮助你。非常感谢你!虽然我无法在同一行上进行聚合,但单独进行聚合也解决了这个问题。