İçereği Atla
Menü
Bu soru işaretlendi
2 Cevaplar
10310 Görünümler

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?

Avatar
Vazgeç
En İyi Yanıt

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


Avatar
Vazgeç
Üretici En İyi Yanıt

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.

Avatar
Vazgeç
İlgili Gönderiler Cevaplar Görünümler Aktivite
2
Tem 22
9206
1
Haz 21
2485
2
Şub 21
299
5
Eyl 20
14367
4
Haz 20
49758