gpt4 book ai didi

django - 快速查找 Django QuerySet 中的最后一个元素?

转载 作者:行者123 更新时间:2023-12-03 15:33:17 29 4
gpt4 key购买 nike

我有一个名为 Valor 的模型。 Valor 有一个机器人。我是这样查询的:

Valor.objects.filter(robot=r).reverse()[0]

获得最后一个 Valor the r 机器人。 Valor.objects.filter(robot=r).count() 大约为 200000,在我的 PC 中获取最后一个项目大约需要 4 秒。

我怎样才能加快速度?我查询的方式不对?

最佳答案

听起来您的数据集将足够大,您可能想要对事物进行一些非规范化。您是否尝试过跟踪 Robot 对象中的最后一个 Valor 对象?

class Robot(models.Model):
# ...
last_valor = models.ForeignKey('Valor', null=True, blank=True)

然后使用 post_save signal进行更新。
from django.db.models.signals import post_save

def record_last_valor(sender, **kwargs):
if kwargs.get('created', False):
instance = kwargs.get('instance')
instance.robot.last_valor = instance

post_save.connect(record_last_valor, sender=Valor)

创建 Valor 对象时,您将支付额外 db 事务的成本,但 last_valor 查找将非常快。尝试一下,看看对您的应用程序是否值得权衡。

关于django - 快速查找 Django QuerySet 中的最后一个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1852738/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com