在Python的Django-QuerySet中获取for循环中'i'的索引

0 投票
3 回答
803 浏览
提问于 2025-04-18 05:23

我在一个查询集中有两个模型对象。

x = [<model.object>]
y = [<model.object>]

我需要通过一个脚本来处理每个对象,针对每一组。

for i in [x,y]:
    i.attribute_1
    i.attribute_2

不过这样做不行,因为在这个例子中,'i' 代表的是一个查询集,而不是一个具体的对象。

for i in [x,y]:
    i[0].attribute_1
    i[0].attribute_2

这看起来有点麻烦。

for i in [x[0],y[0]]:
    i.attribute_1
    i.attribute_2

同样的问题。

for i[0] in [x,y]:
    i.attribute_1
    i.attribute_2

这样也不行。

有没有比

for i in [x,y]:
    i = i[0]
    i.attribute_1
    i.attribute_2

更好的解决方案呢?

或者更好的是

z = 0
for i in [x,y]:
    i = i[z]
    i.attribute_1
    i.attribute_2
    z += 1

?谢谢 :)

3 个回答

0

看起来 itertools.chain 在这种情况下最合适:

for i in itertools.chain(x, y):
    i.attr_1
    i.attr_2

它也可以用在你有一系列查询集合的情况,比如这样:

query_sets = [[<model.object>, <model.object>], [<model.object>, <model.object>, <model.object>], ....]
for i in itertools.chain(*query_sets):
    ....
1

你可能想要做的事情是:

for index, pair in enumerate(zip(x, y)):
   current_x, current_y = pair
   # do stuff with index, current_x, current_y ...
0

我想我明白了

for i in [x,y]:
    z = 0
        while z < len(i)
        o = i[z]
        o.attribute_1
        o.attribute_2
        z += 1

撰写回答