Bỏ qua để đến Nội dung
Menu
Câu hỏi này đã bị gắn cờ
2 Trả lời
6887 Lượt xem

I'm trying to execute a method on user_id change in the sale.order model in Odoo v8, it use osv.osv class.

I create an inherited model with a models.Model class and use the @api.onchange decorator but nothing append.

# -*- coding: utf-8 -*-
from openerp import models, fields, api
from openerp.exceptions import Warning
class Order(models.Model):
    _inherit = 'sale.order'
    @api.onchange('user_id')
    def on_saler_change(self):
        raise Warning(('Something happened.'))
How i suppose to do this?
Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

Martin,

What you can do is,

  • Inherit form view of sale.order having user_id field and add onchange attribute to it as:

    • <field name="user_id" position="attributes">

      • <attribute name="on_change">on_saler_change(user_id)</attribute>

    • </field>

  • in .py inherit sale.order using old api only and define "on_saler_change(user_id)" in it


Hope it helps!    

Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

Hello Martin,


If this onchange method is from base module then call super for the same method.


from openerp import models, fields, api, _

from openerp.exceptions import UserError

class Order(models.Model):

    _inherit = 'sale.order'


    @api.onchange('user_id')

    def on_saler_change(self):

        raise UserError(_('Something Happened'))

        return super(Order, self).on_saler_change()


Hope it works for you.


Thanks,

Ảnh đại diện
Huỷ bỏ
Bài viết liên quan Trả lời Lượt xem Hoạt động
7
thg 10 17
13065
3
thg 3 15
4019
0
thg 11 16
4141
4
thg 1 16
10418
2
thg 3 15
5037