gpt4 book ai didi

python - 在 python 中处理列表

转载 作者:行者123 更新时间:2023-11-28 19:59:53 25 4
gpt4 key购买 nike

我正在尝试对 django lfs 项目做一个小的修改,这将允许我停用没有库存的产品。不幸的是,我才刚刚开始学习 python,所以我在语法上遇到了很大的麻烦。这就是我想要做的。如果我的产品是子类型,我正在使用方法 'is_variant' 返回 tru。如果它是一个变体,我将转向父产品,获取它的事件变体并检查它们的库存。如果库存大于 0,则变量 active 为 0,否则为 1。如果在遍历变体后“active”仍为 1,我将父产品的 active 设置为 false。

我不知何故无法让它以正确的方式工作。使用时:

   def deactivate(self):
if self.is_variant():
prod = self.parent
prod.active = all(var.get_stock_amount() != 0 for var in prod.variants.filter(active=True))
else:
prod.active = self.get_stock_amount() != 0

self.parent.save()

无论它的变体是否有库存,它都会停用我的产品。使用时:

        inactive = 0
if self.is_variant():
prod = self.parent
for s in prod.variants.filter(active=True):
if s.get_stock_amount() == 0:
inactive = 1
else:
inactive = 0
if inactive == 1:
prod.active = 0
prod.save()
else:
if self.get_stock_amount() == 0:
self.active = 0

self.save()

同样的情况,所以我的产品每次都被停用。

我检查了 shell 中的返回类型,self 是一个变体,它是事件的。

最佳答案

首先,我不会调用列表 set,因为这是一个 Python 内置方法(参见 set)。在列表上使用 append(您的语法不正确,您得到的错误明确告诉您;))并且您必须在之前初始化列表:

def deactivate(self):
"""If there are no stocks, deactivate the product. Used in last step of checkout.
"""
if self.has_variants():
sets = []
for s in self.variants.filter(active=True):
sets.append(s)
for var in sets:
...

但是如果唯一的目的是再次迭代它,为什么要事先创建一个列表呢?你可以这样做:

def deactivate(self):
"""If there are no stocks, deactivate the product. Used in last step of checkout.
"""
if self.has_variants():
for s in self.variants.filter(active=True):
if s.get_stock_amount() == 0:
inactive = True
else:
inactive = False
else:
...

阅读更多关于 lists 的信息.

关于python - 在 python 中处理列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2611307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com