[英]Django - List index out of range
我的模型中有一个ManyToManyField。 我需要为每个查询获取第三项,如下所示。
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函数用于admin list_filter,但我只想在每个多对多数组中仅显示第三个项目。
但是,使List index out of range
ERROR List index out of range
; 顺便说说;
def get_job_categories(self):
return self.staff_job_categories.all()[:3]
工作正常。 但得到所有的对象,直到我得到我想要的。
这应适用于少于3个类别的工作:
return ( self.staff_job_categories.all()[2]
if self.staff_job_categories.count() >= 3
else None
)
要么:
return ( self.staff_job_categories.all()[2]
if len( self.staff_job_categories.all()[:3] ) >= 3
else None
)
为了避免所有类别重新计数。
序列中的第一项具有索引0。第三项具有索引2。也许这是您唯一的问题?
例如尝试:
def get_job_categories(self):
return self.staff_job_categories.all()[2]
但是,这假设您可以确定所有员工都至少具有三个职位类别,并且其顺序是可预测的。 真的是这样吗? 我认为 Django的ManyToManyField不能为您提供有关相关对象将被返回的顺序的任何保证。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.