0

我有一个 for 循环,例如:

staff = Staff.objects.all().order_by('person__full_name')
for k in staff:
    categ = k.staff_job_categories.all()[1]
    if categ.name == unicode("xxx","utf-8"):
        t = categ.name

但是因为categ = k.staff_job_categories.all()[1] 我从索引错误中得到了一个列表。

有任何想法吗?

4

2 回答 2

1

似乎print len(k.staff_job_categories.all())会输出0,或者1因为该项目没有人员工作类别,或者只存在一个类别(具有 index0而不是1)。

因此,如果您对第二类感兴趣,如果它存在,您的代码可以更改为

staff = Staff.objects.all().order_by('person__full_name')
for k in staff:
    categories = k.staff_job_categories.all()
    if len(categories) < 2:
        continue
    categ = categories[1]
    if categ.name == unicode("xxx","utf-8"):
        t = categ.name
于 2012-10-21T22:39:09.350 回答
0

它可能k.staff_job_categories.all()是空的或只有一个项目。

您可以按照这些思路进行测试和尝试。

all_categ = k.staff_job_categories.all()
if all_categ:
   categ = all_categ[0]
于 2012-10-21T22:38:50.290 回答