Django:在for循环中解压元组

问题描述 投票:0回答:2

我有商品的查询集。

而且我使用过itertools分组器,将它们按3分组。

但是,当列表包含3个以上的多个元素(例如7个元素)时,最后一个元组用None完成。

我需要遍历所有组(包含3个元素),并针对每个元素:-测试是否不是“无”。-比较组内每个元素的价格,并以较低的价格及其价格返回该元素的ID。

views.py:

Queryset:

 pack_items = PackItem.objects.filter(cart=cart)

按3分组]

pack_items_grouped_by_3 = list(grouper(pack_items, 3))

    for p_item in pack_items_grouped_by_3:
        print(type(p_item)) #prints <class 'tuple'>
        print(p_item) #prints (<PackItem: PackItem object (65)>, <PackItem: PackItem object (66)>, <PackItem: PackItem object (67)>)
        for a, b, c in p_item:
            if a is not None:
                print(a)
                #print(a.pack.price)
            elif b is not None:
                print(b)
                #print(b.pack.price)
            elif c is not None:
                print(c)
                #print(c.pack.price) 

错误:

对于p_item中的a,b,c:TypeError:无法解包不可迭代的PackItem对象

我有一个商品查询集。而且我使用过itertools分组程序将它们按3进行分组。但是,当列表包含3个以上的多个元素(例如7个元素)时,最后一个元组用...

python django itertools
2个回答
0
投票

这是因为grouper()使用izip_longest()fillvalue


0
投票

发生的事情是在您运行时

© www.soinside.com 2019 - 2024. All rights reserved.