2015-10-13 5 views
3

Как я хочу проверить, является ли product_id новой строки, добавленной в mrp.bom.line (Many2many), равным фиксированному id ('= 17'), который никогда не может быть добавлен к BoM. Но я не могу это сделать, потому что он сохраняет новую строку как «NewId», он записывает ее только в базу данных, когда я нажимаю кнопку SAVE. Я понял, что NewId - это какой-то идентификатор, сохраненный в кеше. Как я могу удалить эту строку, когда она равна 17?Odoo 8 Many2many проверить и удалить строки

@api.onchange('bom_line_ids') 

def methodA(self): 
    list = [] 
    fixed_list = [17] 

    for i in self.bom_line_ids: 
     list.append(i.product_id.id) 

    for j in list: 
     if j in fixed_list: 

     HERE DELETE THIS MRP.BOM.LINE AND PRINT WARNING MESSAGE 

     warning_message = "Product: " + self.env['product.template'].search([('id','=',j)]).name + " can't be added to the BoM.\n Please select another product." 
      return { 'warning': {'title': 'Product error', 'message':warning_message} } 

ответ

0

если у вас есть фиксированный идентификатор, чтобы проверить, то этот код много помогает. и сократить время выполнения

@api.onchange('bom_line_ids') 
def methodA(self): 
    fixed_product_id = 17 
    is_found = False 
    for bom_line in self.bom_line_ids: 
     if bom_line.product_id.id == fixed_product_id: 
      is_found =True 
      bom_line.unlink() 

    if is_found: 
     warning_message = "Product: " + self.env['product.template'].search([('id','=',fixed_product_id)]) + " can't be added to the BoM.\n Please select another product." 
     return { 'warning': {'title': 'Product error', 'message':warning_message} } 
Смежные вопросы