跳至内容
菜单
此问题已终结
3 回复
2285 查看
Hi i have created a field named as count_books by inheritace after creating the field it is shown in the model
of odoo but when i search in the pgadmin table(res_partner) the field is not there can anybody help me regarding this.
here is the code:
class ResPartner(models.Model):
_inherit = 'res.partner'
published_book_ids = fields.One2many(
'library.book', 'publisher_id',
string='Published Books')
authored_book_ids = fields.Many2many(
'library.book',
string='Authored Books',
)
count_books = fields.Integer('Number of Authored Books',compute='_compute_count_book')
@api.depends('authored_book_ids')
def _compute_count_book(self):
for b in self:
b.count_books = len(b.authored_book_ids)


形象
丢弃
编写者

but it is showing in the odoo model it mean compute fields can be seen in the odoo models?

最佳答案

Hi Usuma Gull,
It's because your field is compute. Compute field are not store in the DB.
If you want to store it you have to add the parameter store=true.

count_books = fields.Integer('Number of Authored Books',compute='_compute_count_book',store=True)

形象
丢弃
最佳答案

The computed fields by default are not stored in DB and they are computed and returned when requested. That's mean you can show it in Odoo views and it will be readonly and you can search by it in Odoo UI but you can enable searching and setting value by setting the  search and inverse parameters.

If you want to store it in DB, you want to add store=True and add depends fields in api.depends in computed method so once of the depends fields is changed the computed field will be recalculated and you can search it in Odoo UI.

Please check the Odoo documentation for more details.

形象
丢弃
最佳答案

Computed filed is not store by default.

just add store=True in your field 

形象
丢弃
相关帖文 回复 查看 活动
2
8月 23
3184
3
12月 22
33780
1
3月 15
5018
1
2月 23
7956
7
12月 23
26219