IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Odoo (ex-OpenERP) Discussion :

Action après création [V8]


Sujet :

Odoo (ex-OpenERP)

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2008
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 158
    Points : 75
    Points
    75
    Par défaut Action après création
    Bonjour, j'aimerais savoir comment modifier une donnée d' un autre modèle après un nouvel enregistrement.

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 168
    Points : 254
    Points
    254
    Par défaut
    Citation Envoyé par brudao Voir le message
    Bonjour, j'aimerais savoir comment modifier une donnée d' un autre modèle après un nouvel enregistrement.
    Bonjour,

    Cela est possible en créant un nouveau module qui héritera du modèle de données que vous créez. Dans ce nouveau module, vous écrirez une fonction Python qui héritera de la fonction parente create et dans laquelle vous modifierez l'autre modèle. Par exemple :

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        @api.model
        @api.returns('self', lambda rec: rec.id)
        def create(self, values):
            res = super(VotreModele, self).create(values)
            self.env['autre.modele'].browse([id_a_modifier]).champ = "nouvelle_valeur"
            return res

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2008
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 158
    Points : 75
    Points
    75
    Par défaut
    Bonjout Skorps!
    merci pour ta reponse. Mais quand je l'applique ça me donne aucun resultat. ci dessous mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    class modele_un(osv.osv):
        _name = 'modele.un'
        _description = u"table un"
        _columns = {
        'name': fields.char(u" Nom ", size=50, required=True),
        'modelDeux_ids': fields.one2many('modele.deux', 'modeleDeux_id'),
        'dateAcquisition': fields.date(u"Date d'acqu.", required=True),
        'dateMiseEnService': fields.date(u"Date mise en service", required=False),
        'etat': fields.char(u"Etat", size=32, required=True),
        'note': fields.text('Note')
    }
    	
    modele_un()
    
    
    class modele_deux(osv.osv):
        _name = 'modele.deux'
        _description = u"Table deux"
        _columns = {
        'modeleUn_id':fields.many2one('modele.un', 'nom', required=True),
        'date': fields.date(u"Date ", required=True),
        'valeur': fields.float(u"Valeur", required=False),
        'note': fields.text('Note'),
    }
    	
    @api.model
    @api.returns('self', lambda rec: rec.id)
    def create(self, values):
        res = super(modele.deux, self).create(values)
        self.env['modele.un'].browse([5]).etat = "test"
        return res			
    medele_deux()
    ce que je voudrais, lorsque je cree un "modele un", pour voir modifier le champ etat au niveau de "modele 2"

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 168
    Points : 254
    Points
    254
    Par défaut
    Citation Envoyé par brudao Voir le message
    Bonjour Skorps!
    merci pour ta reponse. Mais quand je l'applique ça me donne aucun resultat. ci dessous mon code
    Bonjour,

    L'exemple de code a quelques soucis, notamment le second appel à classe, qui souffre d'une typographie (medele). De plus si vous définissez vous même les classes, vous pouvez directement modifier le comportement de la 1re sans avoir besoin d'hériter comme je l'avais suggéré.

    Un exemple rapide avec la nouvelle API (dont est issue le code que je vous avais proposé).

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    class ModeleUn(models.Model):
        _name = 'modele.un'
        _description = u'table un'
        name = fields.Char(u'Nom', size=50, required=True)
        modelDeux_ids = fields.One2many('modele.deux', 'modeleUn_id')
        dateAcquisition = fields.Date(u'Date d\'acqu.', required=True)
        dateMiseEnService = fields.Date(u'Date mise en service', required=False)
        etat = fields.Char(u'Etat', size=32, required=True)
        note = fields.Text(u'Note')
     
    class ModeleDeux(models.Model):
        _name = 'modele.deux'
        _description = u'Table deux'
        modeleUn_id = fields.Many2one('modele.un', string='nom', required=True)
        date = fields.Date(u'Date', required=True)
        valeur = fields.Float(u'Valeur', required=False)
        note = fields.Text('Note')
     
        @api.model
        @api.returns('self', lambda rec: rec.id)
        def create(self, values):
            res = super(ModeleDeux, self).create(values)
            self.env['modele.un'].browse([5]).etat = "test"
            return res

    Cela devrait fonctionner quand vous créerez un modèle deux, l’enregistrement avec pour identifiant 5 du modèle un sera modifié.
    Si vous voulez que ce soit l'enregistrement lié, il faudra remplacer la ligne self.env['modele.un'].browse([5]).etat = "test" par
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
            res.modeleUn_id.etat = 'test'

    Désolé je n'ai pas le temps de vérifier que tout fonctionne comme attendu mais cela devrait, je l'espère, vous aider.

    Bon courage.

  5. #5
    Membre régulier
    Inscrit en
    Novembre 2008
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 158
    Points : 75
    Points
    75
    Par défaut
    Merci skorps!
    ça marche correctement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Génération de views après création d'actions
    Par Jerec dans le forum Zend Studio
    Réponses: 2
    Dernier message: 28/04/2011, 17h08
  2. action APRES chargement complet ...
    Par PinGuy dans le forum Delphi
    Réponses: 7
    Dernier message: 06/07/2006, 18h16
  3. [jTabbedPane] action apres click sur onglet
    Par tony_big_guy dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 02/12/2005, 00h29
  4. Réponses: 5
    Dernier message: 20/11/2005, 12h15
  5. Réponses: 3
    Dernier message: 18/11/2005, 14h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo