Если у вас есть вычислительное поле count
в gender model
и вы хотите установить его значение автоматически при добавлении книги к этому полу, вы можете сделать что-то вроде этого:
- Сначала яЯ предполагаю, что
gender_ids
- это поле many2many в вашей книге, давайте предположим, что оно определено так:
gender_ids = fields.Many2many(co_model='gender.model.name',
relation='book_gender_rel',
column1='book_id',
column2='gender_id')
, поэтому вам нужно создать одно и то же поле
many2many
в вашем поле, я имею в виду, что поле должно иметь одинаковые имена полей и одинаковое имя отношения только с небольшими изменениями значений
column1 and column2
, например:
book_ids = fields.Many2many(co_model='book.book',
relation='book_gender_rel',
column1='gender_id',
column2='book_id')
сделайте ваше поле
count
вычислительным полем, подобным этому, лучше добавить
store=True
, если вычислительная нагрузка велика, и вы не хотите тратить много времени просто на отображение записей полов в представлении (специальное деревоview).
# I renamed the field just to be more readable for others.
count_book = fields.Integer(string='Number of books',
compute='count_number_of_books',
store=True,
help='Contains number of book that belong to this gender')
@api.depends('book_ids')
def count_number_of_books(self):
""" Count number of books that belong to this gender."""
for gender in self:
gender.count_book = len(gender.book_ids)
И таким образом вы можете использовать count_book
в своих отчетах или в любом другом месте, не беспокоясь о его вычислении, потому что Odoo позаботится об этом.