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

I need to change both "create" and "write" BaseModel methods so that, whenever a record is created/edited (any data model), some code of mine should run.

Here's what I've done so far:


class BaseModelExtend(models.AbstractModel):

        _name = 'basemodel.extend'

        @api.model_cr

        def _register_hook(self):

                @api.model

                @api.returns('self', lambda value: value.id)

                def create(self, vals):

                        res = super(BaseModelExtend, self).create(vals) 

                       _logger.info("THIS IS OK")

                       return res

        models.BaseModel.create = create

        return super(BaseModelExtend, self)._register_hook()


I always get a TypeError: super(type, obj): obj must be an instance or subtype of type error!


Does anyone know the write syntax for this?

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

The correct syntax would be:

class BaseModelExtend(models.AbstractModel):
        _name = 'basemodel.extend'
        @api.model_cr
        def _register_hook(self):
                origin_create = models.AbstractModel.create
                @api.model
                @api.returns('self', lambda value: value.id)
                def create(self, vals):
                        res = origin_create(self, vals) 
                       _logger.info("THIS IS OK")
                       return res
                models.AbstractModel.create = create
                return super(BaseModelExtend, self)._register_hook()
Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

we have already changed base method name_get, see this it may help.

from openerp.models import BaseModel
from openerp import api

@api.multi
    def name_get(self):
        result = []
       cr, uid, context = self.env.args
       if uid in context.keys():
            user = self.env['res.users'].browse(context.get('uid'))
if user:
for record in self:
result.append(record.name)
               return result
BaseModel.name_get = name_get                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   


Ảnh đại diện
Huỷ bỏ
Bài viết liên quan Trả lời Lượt xem Hoạt động
2
thg 6 23
2338
1
thg 4 22
9479
2
thg 10 21
8789
1
thg 7 21
22770
6
thg 8 20
5491