Получить значения из родительского поля - Odoo10

У меня в форме 2 поля F1 и F2. Поле F1 - всплывающее окно. При появлении появляется еще 2 поля F3 и F4. Мне нужно получить доступ к значению, хранящемуся в F3, и сохранить его в F2.

Прикрепленное изображение может помочь понять рабочий процесс. Нажмите, чтобы просмотреть это изображение

Вот еще несколько деталей к моему вопросу

Вот что я пробовал.

class JobJob(models.Model):
    _name='job.job'
    address = field.Char('Address')


Class Dailylog(models.Model):
    job_id = fields.Many2one('job.job', 'Job')
    def check(self):
        address = fileds.Char(related='job_id.address')

person user3571631    schedule 02.02.2017    source источник


Ответы (1)


Если я правильно понял ваш вопрос, вы хотите использовать поле отношения. В моем коде вы используете отношение с MyModel, чтобы получить f3 и f4, поэтому вам не нужно его хранить. (Конечно, вы можете, если вы возьмете store=True в определении поля отношения, когда вы его не сохраните, вы не сможете выполнять поиск в этих полях.)

class MyModel(models.Model):
    _name = 'my.model'

    f3 = fields.Char(string='F3')
    f4 = fields.Char(string='F4')

class MyOtherModel(models.Model):
    _name = 'my.other.model'

    f1 = fields.Many2one('my.model', 'F1')
    f2 = fields.Char('F2')
    f3 = fields.Char(related='f1.f3')
    f4 = fields.Char(related='f1.f4')

Теперь у вас есть оба поля (f3 и f4), поэтому их легко отобразить в вашей форме.

ИЗМЕНИТЬ (Вопрос изменен)

TL; DR: вы не можете определить поле в методе.

Я знаю, что это просто логическое поле, но ваш код - это общее изменение модели отношений. Если вы можете это сделать, это означает, что вы можете изменять схему базы данных на лету. Так что иногда одноразовое поле адреса выходит, иногда нет ... но когда его нет, оно стирает ранее загруженные данные в этом поле. Это может быть огромным риском несоответствия.

person Döme    schedule 03.02.2017
comment
Привет! Спасибо за ваш вклад. Теперь ясно, это должно сработать. Но когда я попробовал, то получил RuntimeError: превышена максимальная глубина рекурсии. Я отредактировал свой вопрос тем, что пытался, не могли бы вы изучить его. Оба класса находятся в разных файлах py. - person user3571631; 03.02.2017
comment
@ user3571631 hahoooo, есть ли у вас какие-нибудь комментарии к моему решению? Я действительно взволнован, нормально ли работает? - person Döme; 07.02.2017
comment
Очень хороший. Вы должны принять мой ответ (просто нажмите на трубку справа рядом с ответом). Хорошего дня и веселья! :) - person Döme; 08.02.2017