首页 > 解决方案 > 如何获取返回的查询集的 db id/pk?

问题描述

我有一个模型查询,它返回数据库中每一天的最大值,但它只返回日期和计数。我需要数据库中的 id/pk,但我不知道如何收集它。

from django.db import connection
from datetime import datetime, timedelta, date

def query(request):
    test = NetworkStats.objects.extra(select={'day': connection.ops.date_trunc_sql(
        'day', 'date')}).values('day').annotate(online=Max('online'))
    for obj in test:
        print(obj)

上面的代码打印出以下内容:

{'day': datetime.datetime(2021, 4, 22, 0, 0, tzinfo=), 'online': 485}
{'day': datetime.datetime(2021, 4, 23, 0, 0, tzinfo=), 'online': 466}

模型.py:

class NetworkStats(models.Model):
    online = models.IntegerField()
    cores = models.IntegerField()
    memory = models.FloatField()
    disk = models.FloatField()
    date = models.DateTimeField(auto_now=True)

但我特别需要返回这些值的 id/pk。我怎样才能做到这一点?

因此,需要这样做的想法是,我每 15 秒使用任务调度程序查询一个值(在白天定期更改),以将其保存到我的数据库中。原因是我想获取每天的最大值,然后删除所有其他不是最大值的记录,这样我的数据库就不会用所有这些数据填满我的磁盘。现在我每天看 8 GB,因为我实际上只需要每天的最大值,而且最多应该在几个字节/kb 左右。

test是这个django 的修改版本 - 获得几个时期的最大值

标签: django

解决方案


推荐阅读