родительские дети и фильтрация между ними - PullRequest
0 голосов
/ 12 апреля 2019

Итак, у меня есть 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 Ответ

1 голос
/ 12 апреля 2019

Воспользуйтесь преимуществами переменной области 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()
...