2017-10-17 8 views
2

Je voudrais demander, s'il y a un moyen de "désactiver" onchange décorateur, lorsque le produit est déjà créé."disable" on_change id odoo 9 après la création du produit

J'ai un champ (X), dont la valeur dépend de ce qui sera dans les 3 autres champs (Y). J'ai utilisé "api.onchange". Quand le produit est créé, je veux faire, celui des champs Y, ne changera plus la valeur de X.

J'ai essayé de vérifier, si "self" existe dans la base de données, comme exists(), mais même un nouvel enregistrement est marqué comme "existant". J'ai essayé d'avoir accès à self.id, mais c'est impossible. J'ai pensé à créer un champ supplémentaire avec un type booléen, mais c'est le dernier recours.

Répondre

0

API NOUVEAU

Première photo i a ajouté un événement onchange au nom de product.template i utilisé en mode débogage pour arrêter le programme et voir si j'ai un accès à self._origin j'ai clairement accès à ce

enter image description here

deuxième photo, il montre quand je mis à jour un produit de la valeur d'identification est passé

enter image description here

maintenant Troisième photo montre quand je crée un nouveau produit la valeur du id dans self._origin est faux

enter image description here

Pouvez-vous poster le code que l'utilisation utilisé s'il vous plaît je veux comprendre pourquoi vous n'avez pas acccess à self._origin

API vIEUX

lors de l'utilisation d'un ancien pi self._origin n'est pas accessible mais vous avez la liste des identifiants en mode édition la liste ne sera pas vide.

def onchange_name(self, cr, uid, ids, name, context=None): 
     # when updating a record ids will not be empty 
     # in my case will be ids=[55] 
     # in create mode the ids is empty 
     # id = [] 
     if not ids : 
      # here you are in create mode you put your logic here 
+0

Merci pour votre réponse. Odoo ne reconnaît pas self._origin. Si j'essaie de l'utiliser, alors odoo dit, cet objet 'product.template' n'a pas d'attribut '_origin'. J'ai essayé 'if isinstance (self._origin, models.NewId) ou isinstance (self._origin.id, models.NewId)' et simplement 'print (self._origin)' et odoo se bloque sur cette ligne, peu importe si j'essaie de créer un nouveau produit ou d'en modifier un existant. – Blichu

+0

vérifie mes modifications ma question comment avez-vous mis en œuvre l'événement onchange – Cherif