列表索引超出范围问题,变量尚不存在

时间:2018-01-08 11:12:18

标签: django django-views

我是python django的初学者,我正在解决一个问题,我想我知道如何解决,但我不确定这是正确的做法,我想有你的观点。

我的应用如下: 用户创建项目>>然后创建一个团队>>然后邀请成员加入团队>>重定向到项目详细信息视图

反过来是跟随团队成员的邀请。

这是一个问卷调查应用程序,因此每个受邀成员都需要回答它,答案保存在“响应”中,然后我将结果呈现在仪表板中。

仪表板的所有方法都在我的views.py中。

我的问题是,在邀请成员之后我的所有方法都在后台运行但是大部分变量还不存在,因为受邀用户还没有回答问卷,我收到类似列表索引的错误

有没有办法在不使用if / else / pass的情况下修复它?

方法示例:

def get_current_team(self, format=None, *args, **kwargs):
    #import pdb; pdb.set_trace()
    current_team_member = Project.objects.get(id = self.kwargs['pk1']).team_id.members.all()
    members_response_list = []
    for member in current_team_member:
        member_id = member.id
        member_response = get_user_response(member_id)
        members_response_list.append({member_id:member_response})

    return members_response_list

1 个答案:

答案 0 :(得分:0)

我不这么认为,但是简单的if / return会这样做。你的错误在于Project.objects.get电话。现在无法对其进行测试,但几乎可以肯定Project.objects.get如果id不存在则会抛出异常。考虑:

  1. 检查self.kwargs['pk1']是否与“无”或
  2. 不同
  3. Project.objects.find(id = self.kwargs['pk1']).first()不会给你一个例外,但如果回报不同于无,请事后检查
  4. 在检查对象是否为None或添加try / catch之前,不要链接属性访问。