当在 ODOO 12 中创建模型 B 的新实例(模型 A 有 many2one 字段)时,我如何更改模型 A 中的布尔值?
How can i change a boolean value in model A, when a new instance of model B (have many2one field to model A) is created in ODOO 12?
我有两个 odoo 12 模型,(biblio.location 和 biblio.book),
- 模型 "biblio.book" 包含一个布尔值 "disponibile",默认设置为 true。
- 模型 "biblio.location" 有一个 many2one 字段引用模型 "biblio.book"。
我希望 biblio.book 中的布尔值 "disponible" 在创建 biblio.location 的新实例时自动更改(也在数据库中更改),以其他方式我们租(位置)一本书,我们必须将模型书中的不负责任更改为 FALSE。
我试过 "computed field, @api.onchange and @api.depends" 但对我没有任何作用,请帮助我解决这个问题,我想知道这三个 mehods.thank 你
之间的区别
class本书(models.Model):
_name = 'biblio.book'
_description = 'All books'
name=fields.Char()
annee_edition = fields.Date(string="année d'édition")
ISBN = fields.Integer(required=True)
editor = fields.Char(required=True)
auteur = fields.Many2many('biblio.author',string='auteur_livre',required=True)
disponible=fields.Boolean(default=True,required=True,related='biblio.location.disponible',store=True)
class 位置(models.Model):
_name = 'biblio.location'
_description = 'All librarians'
name=fields.Char()
livre = fields.Many2one('biblio.book',string='livre',required=True,domain =[('disponible','=',True)])
client = fields.Many2one('biblio.customer',string="client",required=True)
date_location =fields.Datetime(required=True)
date_retour_prevu=fields.Datetime(required=True,string="Date retour prévu")
date_retour_reelle=fields.Datetime(required=True,string="Date retour réelle")
不负责任 = fields.Boolean(默认=False)
文件 "C:\Users\PycharmProjects\Odoo12\odoo\odoo\fields.py",第 484 行,在 setup_full 中
self._setup_related_full(型号)
文件 "C:\User\PycharmProjects\Odoo12\odoo\odoo\fields.py",第 527 行,在 _setup_related_full 字段中 = target._fields[name]
键错误:'biblio' - - -
好的,为了按照您希望的方式工作,您需要在 biblio.book 模型中设置一个外键。
book_location = fields.Many2one('biblio.location', string='Book Location')
然后你可以做你的计算字段
disponible = field.Boolean(compute='_disponible', string='Available for Loan', default=False)
@api.model
def _disponible(self):
for book in self:
book.disponible = True if book.book_location else False
您不想将其设置为可存储的,因为您希望它在每次调用该字段时进行检查。如果将其设置为可存储,它只会在创建记录时计算。
我有两个 odoo 12 模型,(biblio.location 和 biblio.book), - 模型 "biblio.book" 包含一个布尔值 "disponibile",默认设置为 true。 - 模型 "biblio.location" 有一个 many2one 字段引用模型 "biblio.book"。
我希望 biblio.book 中的布尔值 "disponible" 在创建 biblio.location 的新实例时自动更改(也在数据库中更改),以其他方式我们租(位置)一本书,我们必须将模型书中的不负责任更改为 FALSE。
我试过 "computed field, @api.onchange and @api.depends" 但对我没有任何作用,请帮助我解决这个问题,我想知道这三个 mehods.thank 你
之间的区别class本书(models.Model):
_name = 'biblio.book'
_description = 'All books'
name=fields.Char()
annee_edition = fields.Date(string="année d'édition")
ISBN = fields.Integer(required=True)
editor = fields.Char(required=True)
auteur = fields.Many2many('biblio.author',string='auteur_livre',required=True)
disponible=fields.Boolean(default=True,required=True,related='biblio.location.disponible',store=True)
class 位置(models.Model):
_name = 'biblio.location'
_description = 'All librarians'
name=fields.Char()
livre = fields.Many2one('biblio.book',string='livre',required=True,domain =[('disponible','=',True)])
client = fields.Many2one('biblio.customer',string="client",required=True)
date_location =fields.Datetime(required=True)
date_retour_prevu=fields.Datetime(required=True,string="Date retour prévu")
date_retour_reelle=fields.Datetime(required=True,string="Date retour réelle")
不负责任 = fields.Boolean(默认=False)
文件 "C:\Users\PycharmProjects\Odoo12\odoo\odoo\fields.py",第 484 行,在 setup_full 中 self._setup_related_full(型号) 文件 "C:\User\PycharmProjects\Odoo12\odoo\odoo\fields.py",第 527 行,在 _setup_related_full 字段中 = target._fields[name] 键错误:'biblio' - - -
好的,为了按照您希望的方式工作,您需要在 biblio.book 模型中设置一个外键。
book_location = fields.Many2one('biblio.location', string='Book Location')
然后你可以做你的计算字段
disponible = field.Boolean(compute='_disponible', string='Available for Loan', default=False)
@api.model
def _disponible(self):
for book in self:
book.disponible = True if book.book_location else False
您不想将其设置为可存储的,因为您希望它在每次调用该字段时进行检查。如果将其设置为可存储,它只会在创建记录时计算。