Python 在条件失败后,get_object_或_404上的循环停止

Python 在条件失败后,get_object_或_404上的循环停止,python,django,Python,Django,我试图从基于另一个模型的模型中提取对象: 代码 但是它在一个循环后停止,因为它确实符合条件,任何帮助都是非常感谢的 这就是我所尝试的: invoice_object = [get_object_or_404(Invoice, invoice_quiz_id=i) for i in finance] 如果这个循环匹配一个错误的条件,它为什么会停止呢?如何使其继续不符合条件 如果这个循环匹配一个错误的条件,它为什么会停止呢?如何使其继续不符合条件 a的想法就像文档中所说的: 调用在给定的模型管理器

我试图从基于另一个模型的模型中提取对象:

代码

但是它在一个循环后停止,因为它确实符合条件,任何帮助都是非常感谢的

这就是我所尝试的:

invoice_object = [get_object_or_404(Invoice, invoice_quiz_id=i) for i in finance]
如果这个循环匹配一个错误的条件,它为什么会停止呢?如何使其继续不符合条件

如果这个循环匹配一个错误的条件,它为什么会停止呢?如何使其继续不符合条件

a的想法就像文档中所说的:

调用在给定的模型管理器上获取,但它会引发Http404,而不是模型的DoesNotExist异常

因此,通过设计,如果不存在这样的对象,或者存在多个对象,则会产生错误。如果您不想这样做,您可能希望使用或

这就是说,如果您只对Invoice对象感兴趣,其中Invoice_测验指的是具有as owner request.user的测验,您可以定义一个查询集,如:

invoices = Invoice.objects.filter(invoice_quiz__owner=request.user)

这不仅更加优雅,而且更加高效,因为您将在数据库端进行一些连接,从而在单个查询中获取所有发票对象,在N+1查询中,查询次数是多少。

你的财务包含多少元素?用发票来获取发票可能更有效。Objer.FieldCyraseQuiZyOxObjult= Realest.USER你应该考虑使用Outlook关键字和它们的引用,而不是创建IDS的列表,并对每个条目做一个SQL查询。在财务清单中有大约53项。我无法使用request.user。我需要拥有与列表中ID相同的所有发票finance@chirag:但您在owner=request.user.pk中使用request.user。
invoices = Invoice.objects.filter(invoice_quiz__owner=request.user)