从Odoo v8的父模型行检查

2024-03-28 10:57:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我想检查一个布尔字段,从父类到子(行)类。在

class bsi_print_order(models.Model):
    _name = 'bsi.print.order'

    @api.model
    def create(self, vals):
        if vals.get('name', 'New') == 'New':
            vals['name'] = self.env['ir.sequence'].next_by_code('bsi.print.order') or '/'
        return super(bsi_print_order, self).create(vals)

    name = fields.Char('Reference', required=True, index=True, copy=False, readonly='True', default='New')
    date = fields.Date(string="Print Date",default=fields.Datetime.now)
    production_orders = fields.Many2one('bsi.production.order', ondelete='cascade', string="Production Order")
    due_date = fields.Date(string="Due Date")
    journal_entry = fields.Many2one('account.move', string="Journal Entry")
    stock_picking_id = fields.Many2one('stock.picking', string="Stock Picking")
    order_picking = fields.One2many('bsi.print.order.lines', 'print_order', string="Order lines")
    book_block = fields.Boolean(string="Book Block", default=True)
    binding = fields.Boolean(string="Binding")
    edging = fields.Boolean(string="Edging")

class bsi_print_order_lines(models.Model):
    _name = 'bsi.print.order.lines'

    print_order = fields.Many2one('bsi.print.order', string="Print Order")
    isbn = fields.Many2one('product.product', string="ISBN", domain="[('is_isbn', '=', True)]")
    qty = fields.Integer(string="Quantity")
    consumed_qty = fields.Integer(string="Quantity consumed")
    remaining_qty = fields.Float(string="Remaining quantity") #, compute="_remaining_func"
    is_book_block = fields.Boolean(string="Is Book Block Done")
    is_binding = fields.Boolean(string="Is Binding Done")
    is_edging = fields.Boolean(string="Is Edging Done")
    isbns = fields.Many2one('worksheets.isbns', string="Worksheet ISBNS")

所以,当book_block按钮被选中时,is_book_block也应该被自动选中,与binding和{}一样,它们应该分别选中{}和{}。在

我有以下方法:

^{pr2}$

但是它不起作用,例如,我确实检查edging,甚至保存文档,但是行中的布尔字段没有任何更改。在

有什么想法吗?在


Tags: nametruefieldsdatestringisorderblock
1条回答
网友
1楼 · 发布于 2024-03-28 10:57:17

使用depends时,字段必须具有compute属性:

   some_feild = fiels.SomeType(......., compute='method_name')


   @api.depends('some_field_2', ...)
   def method_name(self):
        # and here the function will be computed.

如果你的领域是100%计算领域,在奥多最好的事情是你 可以侦听父类中的更改以计算子字段:

^{pr2}$

但这是可以的,只有当这个字段总是一个计算字段,我的意思是用户永远不会 从UI更改它的值。在

如果您的字段没有计算,并且用户可以根据需要更改值,而不是您需要使用的值 父类中的onchange。在

class bsi_print_order(models.Model):
    _name = 'bsi.print.order'
    ....

    @api.onchange('book_block '):
    def onchange_book_block(self):
        # in onchange no need for loop 
        # because self should always have only one recod
        for line in self.order_picking:
            line.is_book_block = self.book_block

相关问题 更多 >