в odoo я могу связать отношение Many2one с указанным c полем кроме _rec_name - PullRequest
0 голосов
/ 31 марта 2020
class College(models.Model):
_name = 'module2_college'
_description = 'College Info'
_rec_name = 'clg_name'
clg_name = fields.Char("College")
stream = fields.Many2one('module2_course',"Course")

class Course(models.Model):
_name = 'module2_course'
_description = 'Course Information'
_rec_name = 'course_id'

course_name = fields.Selection([
    ('1', 'BTECH'),
    ('2', 'MTECH'),
    ('3', 'MCA')
],"Stream")
course_id = fields.Char("Course ID")

semester = fields.One2many('module2_semester','cou_id',"Semesters",required=True)

Здесь вместо course_id мне нужно название курса в модели колледжа. Я пробовал 'fields.Many2one (' module2_course.course_name ', "String") ", но в нем не найдено ни одной таблицы с именем.

Ответы [ 3 ]

0 голосов
/ 31 марта 2020

Связанные поля просто работают как другие поля, но являются общими c вычисляемыми полями в фоновом режиме. Просто определите те поля с тем же типом поля, что и связанный.

В вашем случае это будет:

course_name = fields.Selection(selection=[
    ('1', 'BTECH'),
    ('2', 'MTECH'),
    ('3', 'MCA')
], related="stream.course_name")

Вы должны попытаться придерживаться программирования и именования Odoo директивы . Например, course_id придерживается этого, а stream - нет. Имя должно быть stream_id или лучше (но, может быть, вне контекста) course_id.

0 голосов
/ 31 марта 2020

Связанные поля работают с использованием самой ссылки на поле. Поскольку ваш код ссылается на objectname.field_name, которое не будет работать. Так должно быть field_name.field_name

0 голосов
/ 31 марта 2020

попробуйте так:

course_name = fields.Selection(related=stream.course_name)
...