存在不同类型的图书记录,该函数仅统计其中一种。我怎样才能让它计算所有流派?
功能:
@api.multi
def _total_count(self):
for genre in self:
if genre.name:
count_num = 0
ids = self.env['books.books'].search([('genre_ids', '=', genre.name)])
if ids:
count_num += 1
genre.count = count_num
如果您在性别模型
中有一个计算字段count
并且您想要每当您将一本书添加到该性别时自动设置其值你可以这样做:
- 首先,我假设
gender_ids
是您书中的 Many2many 字段让我们假设定义如下:
gender_ids = fields.Many2many(co_model='gender.model.name',
relation='book_gender_rel',
column1='book_id',
column2='gender_id')
- 因此您需要在性别中创建相同的
many2many
字段,我的意思是该字段应该具有相同的字段名称和相同的关系名称仅对column1和column2
的值进行小幅更改,如下所示:
book_ids = fields.Many2many(co_model='book.book',
relation='book_gender_rel',
column1='gender_id',
column2='book_id')
- 使您的
count
字段成为这样的计算字段,最好添加store=True
如果计算量很大,并且你不想取很多时间只是为了在 View (特别是 TreeView )中显示性别记录。
# 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 会处理它。
我是一名优秀的程序员,十分优秀!