django计算列表中的对象位置

时间:2014-06-18 06:34:33

标签: python django

我有一个包含模型中对象的列表。 List是从queryset生成的,并按对象ID排序。现在我怎样才能轻松找到列表中特定对象的位置?例如,列表有一个100对象,目标对象位于第22位。我怎么知道?我想创建过滤器并将列表和对象作为数据从模板传递给它。

mylist = (obj1, obj2, obj3, obj4 ...)
target_obj = some_object


myfilter(mylist, taget_obj):
    ...
    return position

3 个答案:

答案 0 :(得分:1)

这种方式对我有用,而且非常容易使用。

< list >.index(< object >) 

返回值为object的第一个项目列表中的索引。如果没有这样的项目,则会出错。

答案 1 :(得分:0)

您可以在列表上enumerate,并在获得所需对象后找到该位置:

for key, item in enumerate(some_list):
   if item == target:
       return key

答案 2 :(得分:0)

您可以使用:

mylist.find(target_obj)

这将返回值比较等于target_obj的第一个索引。对于模型,如果pk值相等,则实例将被视为相等(奇怪的是,包括两个pk值均为None时,但不应该是在这种情况下的问题)。