跳至內容
選單
此問題已被標幟
2 回覆
10323 瀏覽次數

Hi, I'm using Odoo 11, I would like to know if I'm doing the creation and manipulation of records on cache correctly.

This is a simplified version of my issue:

class model_A(model.Model):
    model_A_some_field = fields.Char()
    model_B_ids = fields.One2many('model_B', 'model_A_id')
class model_B(model.Model):
    model_A_id = fields.Many2one('model_A')
    model_B_some_field = fields.Char()

I need to create, during edition of the form of model_A, a model_B record. I achieved this using an onchange method and 'new' on the model_A class:

@api.onchange('model_A_some_field')
def _onchange_create_record(self):
    self.env['model_B'].new({
        model_A_id = self.id,
        model_B_some_field = 'text'
    })

The problem I'm having is that the model_B record gets created but the fields it has don't appear initialized. I randomly discovered that they get initialized only if they are present as columns on the list view of model_B_ids of the model_A form. Is this the only way to make the cache aware of the records created with new or am I missing something?

頭像
捨棄
最佳答案

class model_A(model.Model):

@api.onchange('model_A_some_field')

def _onchange_create_record(self):
    self.env['model_B'].create({
        model_A_id = self.id,
        model_B_some_field = 'text'
    })

Try it


頭像
捨棄
作者 最佳答案

Sorry, Kevin, I don't have enough karma to comment on your answer so I'm writing here, I hope you get a notification.

The problem of doing a 'create' during edition is that, if you discard the changes, the created records would stay because they are persisted in the database. By using 'new' they are only stored in cache and saved when the form is saved and discarded otherwise.

頭像
捨棄
相關帖文 回覆 瀏覽次數 活動
2
7月 22
9206
1
6月 21
2486
2
2月 21
299
5
9月 20
14368
4
6月 20
49761