This question has been flagged
7 Replies
8203 Views

To create a product I'm using my own module which also create automatically product name combining specified fields values. I't quiet good idea if you want have always the same form of names or same details in title (product name). Because my company is multinational and people have always problem with naming products so to avoid mistakes or misspelled names I decided to built this module to help them and make it easier/quicker/safer and foolproof. Since then nobody except department manager can add new names to the lists used for name creation. Because i would like to avoid increasing amount of fields i need a little advice and help. Because list of fields depends on product type which is the first field in form (fields.selection()) i would like to change some or at least one field label/string but I'm not sure is it possible without writing special program in JavaScript for example.

So if product type = Computer currently named field Variant need to be changed to Speed.

In php it could be so simple ex:

<?php

if($item_type = 'Computer'){

$field_name = 'Variant';}

if($item_type = 'Monitor'){

$field_name = 'Display Size';}

php> and then field name will be changed regarding item type chosen.

Guys, is it possible to change field name (string or label) depending on value selected in selection field in some easy way ?

Of course i can create a dedicated field but if i can just change name ...


Avatar
Discard

"Another silly question" isn't an appropriate title for a question - please review https://www.odoo.com/forum/help-1/faq and https://www.odoo.com/forum/help-1/question/meta-why-do-some-questions-get-answers-and-others-dont-25620

Author

Yes you absolutely right.

Best Answer

I had same situation some time ago. What I did was:

- Create two auxiliary fields, each of one with its own label

- Put both fields in the form view

- Put the main field too in the view, but hidden

- Hide each one depending on the value of your item_type

- Inherit write or on_change method so when the value changes, you can set the main hidden field

Avatar
Discard
Author

This is actually solution I used to have, multiple fields hide or displayed depending on value in other(parent) field. But it's not what I tried to achieve. I wanted to change "Label" rather than whole field :) Why ? I'm not a fan of millions of fields ;) so I wanted to limit fields to it's minimum. So if I could change only a 'Label' conditionally it would be much much better solution :)

Best Answer

Hi, you can use a functional field (called compute field in new v8 api) for that.

Avatar
Discard
Author

Problem is (again) new API (8.0) allow you to do a lot of things but in old API .... not really. I need it for old unfortunately.

@Robert, is an on_change event enough for you? This goes of when something is triggered and you can then change any other field as you'd like. The only requirement is an event happening.

Author

@Yanthe, you suggest that using on_change i can do it ? I can change string in ? Interesting, can you give me an example how should it look like ?