This question has been flagged
1 Reply
8350 Views

Hi,

I build a model, using a Reference field:


class Example(models.Model):
    _name='example'

    refers_to = fields.Reference(
        [('res.users', 'Staff User'), ('res.partner', 'Contact')],
'Staff (res.users) or Contact (res.partner)',
    )

Then, I tried to set a value in that field:


self.env['example'].create({'refers_to': user.id})


'user' being a 'res.users' record. But I got this error message:


Traceback (most recent call last):
`   File "odoo/addons-dev/example_module/tests/test_example.py", line 24, in test_install
`     self.env['example']._install()
`   File "odoo/addons-dev/example_module/models/example.py", line 40, in _install
`     'refers_to': user.id,
`   File "odoo/addons-ext/component_event/models/base.py", line 95, in create
`     record = super(Base, self).create(vals)
`   File "/opt/odoo/odoo/odoo/models.py", line 3394, in create
`     record = self.browse(self._create(old_vals))
`   File "/opt/odoo/odoo/odoo/models.py", line 3472, in _create
`     self._check_selection_field_value(name, val)
`   File "/opt/odoo/odoo/odoo/models.py", line 2105, in _check_selection_field_value
`     field.convert_to_cache(value, self)
`   File "/opt/odoo/odoo/odoo/fields.py", line 1851, in convert_to_cache
`     raise ValueError("Wrong value for %s: %r" % (self, value))
` ValueError: Wrong value for example.refers_to: 1


So, now I’m wondering, what is the proper way to set a reference attribute.

Thanks,

Cyrille (La LibreRie)

Avatar
Discard
Best Answer

Hello LaLibreRie,

As per your example ,

>if you have value of parter then use this code as value of your field (refers_to)

value = 'res.partner,' + str(partner.id)

or

value = '%s,%s' % ('res.partner', partner.id)


> or if you have value of user then use this code for field (refers_to)

value = 'res.user,' + str(user.id)

or

value = '%s,%s' % ('res.user', user.id)

Thanks,

Dipak


Avatar
Discard
Author

Great, works like a charm, thank you very much

My pleasure !