Django:列表索引超出范围

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

我有以下MultilingualQuerySetsuper_guest = self.request.event.surveys.get_super_guests()

[除此之外,我过滤了一个作为上下文变量返回的变量。 (有几个不同的上下文变量。)

context["reason_for_attending"] = list(filter(
    lambda question: question.focus == QuestionFocus.REASON_FOR_ATTENDING,
    super_guest
))[0]

现在,只要数据库中有一个条目,一切都很好。但是,有可能还没有“响应”。然后我收到一个list index out of range错误。原因是[0]。您有解决方案吗?

python django
1个回答
0
投票

发生这种情况的原因是,super_guest中没有任何项目符合给定条件(super_guest也可能只是空的。

您可以在此处使用next(..) [python-doc],并传递默认值,例如:

next(..)

如果没有元素,则context['reason_for_attending'] = next(filter( lambda question: question.focus == QuestionFocus.REASON_FOR_ATTENDING, super_guest ), None)将为context['reason_for_attending']。然后,您可以在模板中进行一些适当的渲染。

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