我有商品的查询集。
而且我使用过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个元素)时,最后一个元组用...
这是因为grouper()
使用izip_longest()
和fillvalue
:
发生的事情是在您运行时