Python Django-列表索引超出范围

Python Django-列表索引超出范围,python,django,arrays,django-models,Python,Django,Arrays,Django Models,我的模型中有很多字段。我需要为每个查询获取第三项,如下所示 class Staff(models.Model): status = models.BooleanField(default=True) person = models.ForeignKey(Person) staff_job_categories = models.ManyToManyField(StaffJobCategory) staff_titles = models.ManyToManyFie

我的模型中有很多字段。我需要为每个查询获取第三项,如下所示

class Staff(models.Model):
    status = models.BooleanField(default=True)
    person = models.ForeignKey(Person)
    staff_job_categories = models.ManyToManyField(StaffJobCategory)
    staff_titles = models.ManyToManyField(PersonTitle, null=True, blank=True)

    def get_job_categories(self):
          return self.staff_job_categories.all()[3]
我对管理员列表过滤器使用get_job_categories函数,但我只想在每个多对多数组中显示第三项

但你要得到
列表索引超出范围
错误; 顺便说一下

def get_job_categories(self):
    return self.staff_job_categories.all()[:3]

很好。但是获取所有对象,直到我得到我想要的。

序列中的第一项具有索引0。第三项有索引2。也许这是你唯一的问题

例如,尝试:

def get_job_categories(self):
    return self.staff_job_categories.all()[2]

但是,这假设您确定所有员工至少有三个工作类别,并且他们的顺序是可预测的。真的是这样吗?我认为Django的ManyToManyField不能保证相关对象的返回顺序。

序列中的第一项具有索引0。第三项有索引2。也许这是你唯一的问题

例如,尝试:

def get_job_categories(self):
    return self.staff_job_categories.all()[2]

但是,这假设您确定所有员工至少有三个工作类别,并且他们的顺序是可预测的。真的是这样吗?我认为Django的ManyToManyField不能保证相关对象的返回顺序。

这应该适用于绑定到少于3个类别的作业:

return ( self.staff_job_categories.all()[2] 
         if self.staff_job_categories.count() >= 3 
         else None
       )
或:


为避免所有类别重新计数。

这适用于绑定到少于3个类别的作业:

return ( self.staff_job_categories.all()[2] 
         if self.staff_job_categories.count() >= 3 
         else None
       )
或:

避免所有类别的重新计票