İçereği Atla
Menü
Bu soru işaretlendi
1 Cevapla
4879 Görünümler

Hi,

I am pretty new creating my custom modules. What I want to do is to create a 'custom_id' for each user based on the input of other of the fields. 

So I have a readonly field like this

'IdNumber': fields.char('Id Number', readonly=True),

And then I have

'CountryID': fields.char('Country ID', required=True),

'father_name': fields.char('Last Name', required=True),

What I want to do is to generate the IdNumber when the user inputs the data for CountryId and father_name. For example CountryID+father_name

I simply need a tip in the right direction and I will try to figure it out from there. I guess I have to use a fields.function for my IdNumber but I would like some clarification.

 

Thanks!

 

Avatar
Vazgeç

In v8 ,you can use compute method and v7 you can use fields.function

En İyi Yanıt

My suggetion is to create private method and decorate it with @api.onchange decorator. This will cause Odoo v8 to call this method whenever the fields specified in the decorator are changed (in your case the fields CountryID and father_name. Inside the method you can assign the new valude to the IdNumber field, and this value will be stored (check this example https://www.odoo.com/forum/help-1/question/odoo-8-api-onchange-example-how-to-copy-field-value-to-other-field-74838)

If you are trying this in V7, than the way the oncall is defined is different. In V7, you neet to place the "store" attribute on the filed and specify which model/fields to be monitored and which function/lambda to be called when the fields are modified. 

Avatar
Vazgeç
Üretici

Thanks a lot Jordan. I am wondering, how did you learn about the existence of the @api.onchange? Is there any documentation (like wordpress codex for example) you suggest me to read? Thanks

You can find more details on this page: https://www.odoo.com/documentation/8.0/reference/orm.html#module-openerp.api

İlgili Gönderiler Cevaplar Görünümler Aktivite
3
Tem 25
8770
1
May 25
1072
0
Oca 24
1765
1
Şub 22
23908
5
Ara 21
16744