Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.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 Django model.objects.all()在正常调用时给出的列表索引超出范围_Python_Django_Django Models_Django Views - Fatal编程技术网

Python Django model.objects.all()在正常调用时给出的列表索引超出范围

Python Django model.objects.all()在正常调用时给出的列表索引超出范围,python,django,django-models,django-views,Python,Django,Django Models,Django Views,因此,我目前正在使用Django处理一个私人项目,当我尝试为团队加载页面时,页面上只显示“列表索引超出范围”,我使用object.all()从模型团队中获取每个团队 在模板内部,我使用for循环将每个团队发布到页面上,我一直尝试使用order_by()和first(),但它们似乎都没有帮助 我的追踪到了 我做错了什么我应该改变什么 景色 模范团队 回溯的关键部分是: File "/home/melonendk/webapps/victory_genki_dk/victory/staff/mode

因此,我目前正在使用Django处理一个私人项目,当我尝试为团队加载页面时,页面上只显示“列表索引超出范围”,我使用object.all()从模型团队中获取每个团队

在模板内部,我使用for循环将每个团队发布到页面上,我一直尝试使用order_by()和first(),但它们似乎都没有帮助

我的追踪到了

我做错了什么我应该改变什么

景色 模范团队
回溯的关键部分是:

File "/home/melonendk/webapps/victory_genki_dk/victory/staff/models.py" in teamleaders_listable
  22.       string = leaders[0].extendeduser.nickname

File "/home/melonendk/webapps/victory_genki_dk/lib/python3.6/Django-1.11.6-py3.6.egg/django/db/models/query.py" in __getitem__
  289.         return list(qs)[0]

Exception Type: IndexError at /teams/
Exception Value: list index out of range
这说明
leader[0]
失败,因为
self.members.filter(teammembership\uu leader=True)
是一个空查询集

您可以稍微更改代码以使用
“,”.join()
,而不是在查询集中循环。当查询集为空时,这将返回空字符串
'

@property
def teamleaders_listable(self):
    leaders = self.members.filter(teammembership__leader=True)
    return ", ".join(l.extendeduser.nickname for l in leaders)

显然
leaders
是空的,因此
leaders[0]
引发了一个异常。这很有趣,因为当在另一台django服务器上使用它时,它可以正常工作,但你可能是对的另一件事,
len(self.members.filter(teammembership\uu leader=True))
force评估整个查询集,如果查询集太大,可能会导致性能问题。你可以使用
.count()
来代替它执行
选择count(*)
self.members.filter(teammembership\uu leader=True)。count()>1
谢谢所有提示@ozgurvatanse,我会随身携带:)你们都帮了我很大的忙谢谢much@Alasdair
qs.exists()
qs.count()相同>0
不是
>1
。非常感谢你们今天基本上是我的英雄:D
File "/home/melonendk/webapps/victory_genki_dk/victory/staff/models.py" in teamleaders_listable
  22.       string = leaders[0].extendeduser.nickname

File "/home/melonendk/webapps/victory_genki_dk/lib/python3.6/Django-1.11.6-py3.6.egg/django/db/models/query.py" in __getitem__
  289.         return list(qs)[0]

Exception Type: IndexError at /teams/
Exception Value: list index out of range
@property
def teamleaders_listable(self):
    leaders = self.members.filter(teammembership__leader=True)
    return ", ".join(l.extendeduser.nickname for l in leaders)