Django:列表索引超出范围

时间:2019-11-09 14:33:55

标签: python django

我有以下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]。您有解决方案吗?

1 个答案:

答案 0 :(得分:1)

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

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

context['reason_for_attending'] = next(filter(
    lambda question: question.focus == QuestionFocus.REASON_FOR_ATTENDING,
    super_guest
), None)

如果没有元素,则context['reason_for_attending']将是None。然后,您可以在模板中进行适当的渲染。