django python 仅从查询集中获取第一个结果?

问题描述 投票:0回答:1

我正在使用信号向相应用户发送电子邮件。 我从查询中获得了多个查询集,即:

orig_ordered_product = sender.objects.filter(id=instance.id)

结果(因为在这种情况下 a 有两项)是:

<QuerySet [<OrderedProduct: Torta de Nozes>]>
<QuerySet [<OrderedProduct: Café Expresso>]>

有没有办法仅使用第一个查询集获取并执行其他操作,因为我只需要其中一个查询集的数据?

我尝试使用 .first() 和 .last() 但它不起作用。结果:

orig_ordered_product = sender.objects.filter(id=instance.id).first()

我得到:

Torta de Nozes
Café Expresso

非常感谢您提供任何帮助或指导从这里去哪里!

python django signals django-queryset
1个回答
1
投票

这个:

sender.objects.filter(id=instance.id).first()

应该可以工作,即使对象不存在它也会返回

None
。确保您正确编写了查询。

但你也可以使用:

orig_ordered_product = None
try:
    orig_ordered_product = sender.objects.get(id=instance.id)
except <modelClass>.DoesNotExists:
    pass

.get()
.filter(id=...).first()
的唯一不同之处在于,如果对象不存在,它会引发异常。

© www.soinside.com 2019 - 2024. All rights reserved.