#odoo #odoo-9
#odoo #odoo-9
Вопрос:
Итак, у меня есть 3 категории. во-первых, без дочерних элементов, во-вторых, всегда есть дочерний элемент, но иногда у него нет родителя, а иногда есть, и третья категория всегда без родителя.
И моя цель — перейти к этим 3 категориям, начиная снизу вверх.
сначала мне нужно проверить категорию без дочерних элементов, вторую категорию secodn, а затем третью.
если мое условие выполнено, я просто удаляю сообщение, если условия не выполняются, я перехожу в другую категорию и проверяю условие.
итак, я написал этот код, и это вроде как нормально, но, может быть, я мог бы сделать это, не повторяясь, и сделать свой код более простым?
msg = _("some %s %s message: %s.")
msgs = []
for line in order.order_line:
parent_id = line.product_id.categ_id.parent_id
parent_parent = line.product_id.categ_id.parent_id
categ_id = line.product_id.categ_id
categorys = parent_id parent_parent categ_id
categorys = parent_id parent_parent categ_id
for categ in categorys:
if not categ.childs_id and categ.qty_for_discount:
if line.product_qty < categ.qty_for_discount:
msgs.append(
msg % (
categ.qty_for_discount - line.product_qty,
line.product_id.uom_id.name,
categ.name
)
)
elif categ.parent_id and categ.child_id and categ.qty_for_discount:
if line.product_qty < categ.qty_for_discount:
msgs.append(
msg % (
categ.qty_for_discount - line.product_qty,
line.product_id.uom_id.name,
categ.name
)
)
else:
if line.product_qty < categ.qty_for_discount:
msgs.append(
msg % (
categ.qty_for_discount - line.product_qty,
line.product_id.uom_id.name,
categ.name
)
)
Ответ №1:
Воспользуйтесь преимуществами переменной области видимости Python. Попробуйте что-то вроде этого:
def your_method(self):
msgs = []
def append_msg():
msgs.append( _("some %s %s message: %s.")% (
categ.qty_for_discount - line.product_qty,
line.product_id.uom_id.name,
categ.name
))
for line in order.order_line:
parent_id = line.product_id.categ_id.parent_id
parent_parent = line.product_id.categ_id.parent_id
categ_id = line.product_id.categ_id
categories = parent_id parent_parent categ_id
categories = parent_id parent_parent categ_id
for categ in categories:
if not categ.childs_id and categ.qty_for_discount:
if line.product_qty < categ.qty_for_discount:
append_msg()
elif categ.parent_id and categ.child_id and categ.qty_for_discount:
if line.product_qty < categ.qty_for_discount:
append_msg()
else:
if line.product_qty < categ.qty_for_discount:
append_msg()