因此,我有一段代码,它应该遍历一个产品列表,将它们与价格联系起来,然后将产品与价格作为“显示项”显示在网页上给用户
for product in product_list:
p = PricedProduct.objects.filter(proid=product)
p.order_by('date')
dp = DisplayProduct
dp.proid = product.id
dp.proname = product.productname
print(product.productname)
dp.proprice = p[0].value
displaylist.insert(0,dp)
在这里,我将项目链接到“打印”方法当前显示的价格:
苹果
香蕉
但是当我跑步时:
for dp in displaylist:
print(dp.proname)
它显示:
香蕉
香蕉
有人能告诉我为什么会这样,因为它导致我的网页只显示了两个香蕉,而不是一个苹果和一个香蕉
如果不初始化
DisplayProduct
,只需将dp
设置为对DisplayProduct
类的引用,结果是直接更改类的字段:请注意,此代码效率相当低:通过在顶部插入,可以构造时间复杂度O(n2)的算法。在列表末尾追加通常更有效(因为它具有摊余成本O(1))。如果你需要颠倒清单,最好在最后颠倒一下
我还建议为
DisplayProduct
构造一个合适的初始值设定项(也许您的类已经有了一个合适的初始值设定项),这样我们就可以重写它:相关问题 更多 >
编程相关推荐