Hello I am trying to get a one2one relationship to work. Here are my
classes:
*class Formulario*(ModelSQL,ModelView):
'Formulario'
_name = 'cefiro.formulario'
_description = __doc__
formVivTrabajo =
fields.One2One('cefiro.formvivtrabajo','formularioid','formvivtrabajoid','Vivienda
y Trabajo', required=True)
Formulario()
*class Formvivtrabtarget*(ModelSQL,ModelView):
'Formvivtrabtarget'
_name = 'cefiro.formvivtrabtarget.target'
_description = __doc__
tipoVivienda = fields.Selection([('casa','La casa'),('calle','La
calle'),('inst',u'Institución protectora'),('car','Privado de
libertad')],'Vive en',required=True)
Formvivtrabtarget()
*class Formviviendatrabajo*(ModelSQL,ModelView):
'Formvivtrabajo'
_name = 'cefiro.formvivtrabajo'
_description = __doc__
formvivtrabajoid = fields.Many2One('cefiro.formvivtrabtarget.target',
'Formvivtrabtarget')
formularioid = fields.Many2One('cefiro.formulario', 'Formulario')
def __init__(self):
super(Formviviendatrabajo, self).__init__()
self._sql_constraints += [
('origin_unique', 'UNIQUE(formularioid)','Origin must be
unique'),
('target_unique', 'UNIQUE(formvivtrabajoid)','Target must be
unique'),
]
Formviviendatrabajo()
You can see that I already have formvivtrabjoid as a Formviviendatrabajo's
field but I am getting the following error when saving it:
Traceback (most recent call last):
> File "/trytond/protocols/jsonrpc.py", line 123, in _marshaled_dispatch
> response['result'] = dispatch_method(method, params)
> File "/trytond/protocols/jsonrpc.py", line 156, in _dispatch
> res = dispatch(*args)
> File "/trytond/protocols/dispatcher.py", line 156, in dispatch
> res = getattr(obj, method)(*args_without_context, **kargs)
> File "/trytond/model/modelsql.py", line 925, in write
> self._columns[field].set(ids, self, field, values[field])
> File "/trytond/model/fields/one2many.py", line 130, in set
> model.create(act[1])
> File "/trytond/model/modelsql.py", line 423, in create
> self._validate([id_new])
> File "/trytond/model/modelsql.py", line 2207, in _validate
> super(ModelSQL, self)._validate(ids)
> File "/trytond/model/modelstorage.py", line 1090, in _validate
> if (isinstance(record[field_name], (BrowseRecordNull,
> File "/trytond/model/browse.py", line 174, in __getitem__
> for data in self._model.read(ids, ffields.keys()):
> File "/trytond/model/modelsql.py", line 622, in read
> res2 = self._columns[field].get(ids, self, field, values=res)
> File "/trytond/model/fields/one2one.py", line 24, in get
> res = super(One2One, self).get(ids, model, name, values=values)
> File "/trytond/model/fields/many2many.py", line 78, in get
> ], order=order))
> File "/trytond/model/modelsql.py", line 1168, in search
> order_by2, tables2, tables2_args = self._order_calc(field, otype)
> File "/trytond/model/modelsql.py", line 2058, in _order_calc
> (field, self._name))
> Exception: ('Error', 'Wrong field name (formvivtrabajoid) for
> cefiro.formvivtrabajo in order!')
>
I based on the following links but didn't work as you can see:
[1] http://doc.tryton.org/2.0/trytond/doc/ref/models/fields.html#one2one,
[2]
http://hg.tryton.org/trytond/file/14a0a4d4e03b/trytond/test/test.py#l359
[3]
http://hg.tryton.org/trytond/file/14a0a4d4e03b/trytond/tests/test_fields.py#l2083
Thank you in advance
--
You received this message because you are subscribed to the Google Groups
"tryton" group.
To view this discussion on the web visit
https://groups.google.com/d/msgid/tryton/363f7af1-9c8c-4ec0-a3e3-7e4c734c5c7a%40googlegroups.com.