El 13 de noviembre de 2013 20:46, Ricardo Richardson Balcacer <
richardson.balca...@gmail.com> escribió:

> Guillem,
>
> Realmente es el mismo código que expuse en el principio de esta
> publicación, si quieres puedes hasta probarlo tu mismo. Una vez que
> intentas referenciar dos campos diferentes One2Many a una clase externa que
> tiene un campo Many2One en el momento que es presentado en la vista te va
> aparecer los mismos objetos en ambos campos.
>
> La única solución que encontré, que funcione es declarar clases externas
> diferentes y cada campo O2M tenga su propia clase externa. La solución que
> plantea Raimon es de poner diferentes campos M2O en una clase externa;
> asignar cada campo O2M a su campo respectivo en la clase externa. Al
> intentar la solución de Raimon lo que ocurre es que la ventana que se
> genera en cualquier O2M nuevo, me solicita el otro campo de la clase
> externa, por lo que entendí es de poner alguna lógica que habilite el
> 'required=False' dependiendo el O2M que se elija para así poder grabar el
> registro.
>
> Es posible que esto ultimo funcione mi inconveniente viene a que me parece
> un 'Hack' al core de Tryton para que eso funcione, el declarar dos clases
> externas apartes es tan buena como esa solución.
>

A mi no me parece tan buena esa solución puesto que estás duplicando una
estructura idéntica (una tabla) de la base de datos.


>
> Gracias,
> Ricardo
>
> El miércoles, 13 de noviembre de 2013 15:08:40 UTC-4, Guillem Barba
> escribió:
>>
>>
>> El 13/11/2013 16:28, "Ricardo Richardson Balcacer" <
>> richardso...@gmail.com> va escriure:
>>
>> >
>> > Yo no recuerdo haber puesto 'required' en ningún momento, supongo que
>> pudiera revisarlo, aunque no me parece por lo que he podido entender el ORM
>> de Tryton funciona así primero son One2Many ambos campos. La definición del
>> modelo establece en una entrada tal cual en la base de datos como aparece,
>> la relación entre objetos es referencial a la llave del objeto maestro y la
>> relación se establece por el tipo puesto explicito en la propiedad
>> __name__, de tal forma que cuando se abre el objeto maestro se busca la
>> relación entre los nombres '__name__' no en la relación de campos. Esto lo
>> se porque al revisar la tabla me percate que Tryton no crea los dos campos
>> que definí como 'One2Many' sino que aparecen en una tabla aparte
>> referenciados por la llave del registro del objeto maestro.
>>
>> Sinceramente, no he entendido casi nada de este párrafo.
>>
>> Si haces un Pastebin (o el servicio similar que más te guste) con el
>> código real que estás usando tal vez podamos encontrar alguna cosa que se
>> nos está pasando por alto. Porque no tendría que ser tan complicado.
>>
>> Un One2Many es la relación inversa a un Many2one y REQUIERE siempre y
>> explícitamente que se defina este Many2One en el modelo destino. No hay
>> One2Many sin Many2One, y si el One2Many NO es funcional, el Many2One no
>> puede ser funcional.
>> Lo anterior no se aplica a la inversa (puede haber Many2One si One2Many y
>> el One2Many puede ser funcional usando Many2One no funcional, como pasa con
>> stock.move y stock.shipment).
>> En todo lo anterior, donde pone Many2One también puede ser Reference.
>>
>> Un Many2One se convierte en una columna en la tabla del modelo con una
>> Foreign Key hacia la tabla de destino.
>> El One2Many no queda reflejado en las tablas de los modelos implicados.
>>
>> La única explicación ue le veo al comportamiento que explicas (aunque
>> supongo que no será esto, por eso sugiero que nos muestres tu código) es
>> que en los dos One2Many hayas puesto el mismo campo (M2O) como campo
>> inverso.
>>
>> Salut!
>> Guillem Barba
>>
>


-- 

Jesús Martín

Zikzakmedia SL
Dr. Fleming, 28, baixos
08720 Vilafranca del Penedès
☏ 93 890 21 08

Responder a