2015-08-04 3 views
1

Я пытаюсь связать поля из разных классов в Odoo. Это должно быть нечто похожее на внешний ключ.Odoo: Как связать поля друг с другом?

Это мой случай: Есть 2 класса с собственными древовидными видами.

Класс 1: opc_taginstellingen:

class opc_taginstellingen(models.Model): 
    _name = 'opc_taginstellingen' 

    Tagnaam = fields.Char(string="Tagnaam") 
    Unit = fields.Char(string="Unit") 

Класс 2: opc_actuelewaardentags

class opc_actuelewaardentags(models.Model): 
    _name = 'opc_actuelewaardentags' 

    TagNaam = fields.Char(string="Tagnaam") 
    TagWaarde = fields.Integer(string="Tagwaarde") 

То, что я хочу сделать сейчас:

В opc_actuelewaardentags, получить блок из opc_taginstellingen где TagNaam (opc_actuelewaardentags) == Tagnaam (opc_actuelewaardentags).

Затем я хочу также показать Единицу в древовидной структуре opc_actuelewaardentags. Но я думаю, это не проблема.

также учитывать разницу Tag н Aam и Tag N AAM.

Что я пытался до сих пор:

Я играл с реляционными полями, many2one-х, one2many и many2many. Не удалось заставить его работать еще ...

Это то, что я поместил в классе opc_actuelewaardentags, но не получилось:

Unit1 = fields.Many2one('opc_taginstellingen', string="Unit1") 
Unit1 = fields.Related('Unit', type="Many2One", relation="opc_taginstellingen", string="Unit1") 
Unit1 = fields.Char(related='opc_taginstellingen.Unit', store=True) 

Edit: После комментария BSL Technologies', я Я изменил все на нижний регистр, так что это не проблема.

Ошибок не существует. Но значение для единицы не отображается в древовидном представлении opc_actuelewaardentags. Название имеет.

Это мой код прямо сейчас:

class opc_taginstellingen(models.Model): 
    _name = 'opc_taginstellingen' 

    tagnaam = fields.Char(string="Tagnaam") 
    unit = fields.Char(string="unit") 

class opc_actuelewaardentags(models.Model): 
    _name = 'opc_actuelewaardentags' 

    tagnaam = fields.Char(string="Tagnaam")  
    opc_tag = fields.Many2one('opc_taginstellingen', string="unit") 
    unit = fields.Char(related='opc_tag.unit',string="unit") 

Есть ли что-нибудь еще, почему это не будет работать?

ответ

2

Это поле должно быть добавлено в класс opc_actuelewaardentags.

opc_tag = fields.Many2one('opc_taginstellingen', string="Unit1") 
unit = fields.Char(related='opc_tag.Unit',string="Unit") 
+0

спасибо. Но, к сожалению, я просто попробовал и не работал ... Не получил никаких ошибок сейчас, поле отображается в древовидном представлении, но не показывает никаких значений ... – RobbeM

+0

Может быть, это что-то с верхний регистр U в поле «Единица»? Я уже узнал, что не должен использовать имена, чувствительные к регистру, но в любом случае ... Пробовал некоторые вещи: Единица = поля.Char (related = 'opc_tag. "Unit"', string = "Unit") ==> дал error Unit = fields.Char (related = 'opc_tag. \ "Unit \"', string = "Unit") ==> дал ошибку У вас остались какие-то другие идеи? – RobbeM

+0

да, вы правы .... мы можем использовать единицу ... –

Смежные вопросы