Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python列表:列表索引超出范围_Python_Django_Python 2.7_Django Models - Fatal编程技术网

Python列表:列表索引超出范围

Python列表:列表索引超出范围,python,django,python-2.7,django-models,Python,Django,Python 2.7,Django Models,我不太熟悉python,这段代码是从我的一个朋友那里得到的,需要一些社区帮助来解决这个问题 天数=列表(zip(Leave\u type.objects.filter(type=leavetype).values\u list('max\u days',flat=True))[0]) 注意:我已经执行了迁移并设置了数据库 def timeoffapply(request): if not request.session.get('id', None): return render(re

我不太熟悉python,这段代码是从我的一个朋友那里得到的,需要一些社区帮助来解决这个问题

天数=列表(zip(Leave\u type.objects.filter(type=leavetype).values\u list('max\u days',flat=True))[0])

注意:我已经执行了迁移并设置了数据库

def timeoffapply(request):

if not request.session.get('id', None):
    return render(request, 'login.html')
else:
    stdate = request.POST['startDate']
    enddate = request.POST['endDate']
    leavetype = request.POST['leaveType']
    days = list(zip(Leave_type.objects.filter(type=leavetype).values_list('max_days', flat=True))[0])
    d1 = datetime.strptime(stdate, "%Y-%m-%d")
    d2 = datetime.strptime(enddate, "%Y-%m-%d")
    d3 = abs((d2 - d1).days)+1
    empid = (request.session['id'])[0]
    countdays = Leave.objects.filter(Emp_id = empid,type=leavetype).aggregate(Sum('days'))
    if countdays['days__sum'] == None:
        finaday = (days[0] - 0)
    else:
        finaday=(days[0] - countdays['days__sum'])
    if enddate>=stdate:
        if finaday >= d3:
            getleaveid = list(zip(Leave_type.objects.filter(type=leavetype).values_list('id', flat=True))[0])
            split_lt_id = ("".join(str(e) for e in getleaveid))
            empid = (request.session['id'])[0]
            get_emp_name = list(zip(Employee.objects.filter(id=empid).values_list('name', flat=True))[0])
            get_emp_name = ("".join(str(e) for e in get_emp_name))
            empid = (request.session['id'])[0]
            leave_id = Leave.objects.all().count()
            test = Leave(id=(leave_id + 1), name=get_emp_name, type=leavetype, start_date=stdate, end_date=enddate,
                         days=d3,
                         status="pending")

            test.Emp_id_id = empid
            test.leave_type_id_id = split_lt_id
            test.save()
            return HttpResponseRedirect('/')
        else:
            qs = Leave.objects.all().filter(Emp_id=(request.session['id'])[0])
            context = {
                "qs": qs,
                "error": "true",
                "msg": "You are allowed to have holidays for " + str(finaday) + " days in " +str(leavetype)
            }
            return render(request, 'timeoff.html', context)

在某种情况下,从
Leave\u type.objects.filter(type=leavetype.values)返回的列表('max\u days',flat=True)
为空,您使用
[0]
访问空列表中的第一个元素。因此导致
列表索引超出范围
错误。

可能存在这样一种情况,即从
Leave\u type.objects.filter(type=leavetype.values)返回的列表('max\u days',flat=True)
为空,并且您正在使用
[0]
访问空列表中的第一个元素。因此导致
列表索引超出范围
错误。

问题只是从Leave\u类型模型返回的queryset为空;因此,您无法访问它。

问题只是从Leave_类型模型返回的queryset为空;因此,您无法访问它。

在分配之前,打印分配正确部分的组件,您应该找到错误原因。您想更熟悉Python吗?这段代码可以在许多方面得到改进(
finaday=(days[0]-0)
…),这将使您更容易理解错误。导致错误的那一行也很奇怪(没有必要使用
zip
,一个片段就可以了,但即使这样也没有必要,因为
days
的唯一用法是
days[0]
,所以您可以先获得
结果)。无论如何,错误信息并不存在;列表必须为空,您可以按照progmatico的建议进行打印,找出与预期不同的原因。在作业之前,打印作业右侧的组件,您应该找到错误原因。您想更熟悉Python吗?这段代码可以在许多方面得到改进(
finaday=(days[0]-0)
…),这将使您更容易理解错误。导致错误的那一行也很奇怪(没有必要使用
zip
,一个片段就可以了,但即使这样也没有必要,因为
days
的唯一用法是
days[0]
,所以您可以先获得
结果)。无论如何,错误信息并不存在;列表必须为空,您可以按照progmatico的建议进行打印,找出与预期不同的原因。我填充了关于离开类型的数据库表,并尝试再次调试我的程序,但仍然出现相同的错误。我填充了关于离开类型的数据库表,并尝试再次调试我的程序,但我仍然没有成功获取相同的错误我填充了关于离开类型的数据库表,并再次尝试调试我的程序,但如果您将
check=leave\u-type.objects.filter(type=leavetype)
添加到您的代码中,在问题行上方的代码中是否
check
为空查询集,则仍然会收到相同的错误?或者是否有数据?您可能在数据库中有数据,但您的查询没有返回数据。我填充了关于离开类型的数据库表,并再次尝试调试我的程序,但如果您添加
check=leave\u type.objects.filter(type=leavetype),我仍然会收到相同的错误
到您的代码,问题行上方是
检查
空查询集吗?或者是否有数据?数据库中可能有数据,但查询没有返回数据。