Я пытаюсь внести небольшую модификацию в проект django lfs, которая позволит мне деактивировать продукты без запасов. К сожалению, я только начинаю изучать Python, поэтому у меня большие проблемы с его синтаксисом. Это то, что я пытаюсь сделать. Я использую метод is_variant, возвращающий значение true, если мой продукт является подтипом. Если это вариант, я обращаюсь к родительскому продукту, найдите его активные варианты и проверьте их запасы. Если запас больше 0, переменная активна равна 0, в противном случае она равна 1. Если после циклического просмотра вариантов вариант «активен» все еще равен 1, я устанавливаю активный родительский продукт равным 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 - это вариант, и он активен.