我有一个包含模型中对象的列表。 List是从queryset生成的,并按对象ID排序。现在我怎样才能轻松找到列表中特定对象的位置?例如,列表有一个100对象,目标对象位于第22位。我怎么知道?我想创建过滤器并将列表和对象作为数据从模板传递给它。
mylist = (obj1, obj2, obj3, obj4 ...)
target_obj = some_object
myfilter(mylist, taget_obj):
...
return position
答案 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
时,但不应该是在这种情况下的问题)。