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
)
或:
避免所有类别的重新计票