我正在使用信号向相应用户发送电子邮件。 我从查询中获得了多个查询集,即:
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
非常感谢您提供任何帮助或指导从这里去哪里!
这个:
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()
的唯一不同之处在于,如果对象不存在,它会引发异常。