dans onchange l'auto contient un objet factice lorsque vous modifiez les valeurs rien ne se passe sur la couche de base de données. (opposé au champ de calcul dépend)
mais la valeur d'origine est transmise en self._origin.
@api.onchange('state')
def handed(self):
if self.state == "delivery_success":
# first try this if it work
self._origin.shoes.handed = True
# if not working then you need to fetch the recorod
# from the database first.
shoes = self.env['shoes.order'].search[('id', '=', self.shoes.id)]
shoes.handed = True
mais en faisant cela onchange événement peut causer une certaine imagerie problème que l'utilisateur a changé son esprit et cliquez sur annuler (les modifications sont discared) mais shoes.handed est al prêt dans la base commited.
ma propsition pour vous est d'utiliser un domaine connexe.
class pos_quotation(models.Model):
_inherit = "pos.quotation"
# i'm assuming that your m2o field is shoes
# don't make readonly because you need to save it's changed value
# when you hit save.
handed = fields.Boolean(related="shoes.handed")
@api.onchange('state')
def handed(self):
if self.state == "delivery_success":
self.handed = True
ne pas oublier d'ajouter ce champ à la vue de la forme et assurez-vous qu'il est invisible afin que l'utilisateur ne met pas à jour la valeur manuellement
<field name="handed" invisible="1"/>
espère que vous avez l'idée.