我正在建立一个电子商务网站,我必须按价格过滤产品, 有很多关系,所以我会直言不讳。
Queryset
,然后用它创建了dict
。dict
按值对sorted()
进行排序sorted()
运行完美,我得到了所需的output
。但是,如果2个产品具有相同的price
,则会引发TypeError
(也许是因为1> 1 == False,我认为):
print(d)
{<Product: Product 1>: Decimal('10.00'), <Product: Product 2>: Decimal('10.24'), <Product: Product 3>: Decimal('10.16'), <Product: Product 4>: Decimal('10.00')}
sd = sorted((v, k) for (k, v) in d.items())
TypeError: '<' not supported between instances of 'Product' and 'Product'
我用普通的python尝试了相同的情况,并且未引发任何错误,因此我认为这是与Django
相关的错误。
那么,我该如何在我的Error
项目的Except
块中对此Django
进行反击?
答案 0 :(得分:0)
您可以像这样对对象id()
进行排序:
sd = sorted((v, id(k), k) for (k, v) in d.items())
class Class:
pass
d = {Class(): 10, Class():10}
print(d)
sd = sorted((v, id(k), k) for (k, v) in d.items())
print(sd)
{<__main__.Class object at 0x0000000000428F98>: 10, <__main__.Class object at 0x00000000022947F0>: 10}
[(10, 4362136, <__main__.Class object at 0x0000000000428F98>), (10, 36259824, <__main__.Class object at 0x00000000022947F0>)]