Skip to Content
Меню
Вам необхідно зареєструватися, щоб взаємодіяти зі спільнотою.
Це запитання позначене
3 Відповіді
54613 Переглядів

Hello,

    Seriously I can't find the decent point to say both are different to each other. and give me one example to which saturation to use @api.one and @api.multi ?

    One more thinks i would like to ask even if I define a method, that case which one is either @api.one or @api.multi preferable to specify above the method. thank you

Аватар
Відмінити
Найкраща відповідь

If I am not mistaking it is very easy and clear.
The @api.one is specific for one record and can not be used for multiple records. It automaticly loops on records of of a Recordset for you. 
@api.many is for multiple records, where you can loop through it etc. It will be the current Recordset without the itiration. So any looping would need to be programmed by yourself, for whatever you want

An example of @api.one:

@api.one def _compute_name(self):
      self.name = str(random.randint(1, 1e6))

An example of @api.multi:

@api.multi def subscribe(self):
     for session in self.session_ids:
         session.attendee_ids |= self.attendee_ids
     return {}

You can read more about the @api.one and @api.multi here: http://odoo-new-api-guide-line.readthedocs.org/en/latest/decorator.html

Аватар
Відмінити

You are spot on. api.multi is a single function call for multiple ids. Api.one means a function call for each id, which automatically iterates when multiple id's are sent.

Найкраща відповідь

it is very easy...


you our should never use api.one !

but always api.multi !

and if you want to work only with one record ... Use ensure_one() function ... with api.multi

Аватар
Відмінити