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())される01、このアイテムのスタッフの職種がないか、カテゴリが1つだけ存在するため(インデックスが0あり、ないため1)のようです。

したがって、2番目のカテゴリに興味がある場合は、コードを次のように変更できます。

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 に答える