Django-fr

Forum

#1 05-10-2012 12:18:26

torrak
Membre
Inscription : 31-08-2011
Messages : 47

Mise à jour d'une table avec deux ForeignKey

Bonjour,

Je cherche lorsque un champ passe à TRUE de ma table "invitation" de mon modèle à mettre à jour une autre table ("manager") qui n'est pas directement connectée à cette dernière. Pour cela, je surcharge la méthode save() appartenant à la table invitation. C'est un peu compliqué a expliquer comme ça, je vais donc vous exposer une partie de mon code:

class membre(models.Model):
        ......

class manager(models.Model):
   membres = models.ForeignKey(membre)
   classes = models.ForeignKey(classe)

class classe(models.Model):
        ...........

class invitation(models.Model):
   idclasse = models.ForeignKey(classe)
   idMembreDest = models.ForeignKey(membre, blank = True, null=True)
   AcceptInvit = models.BooleanField(default = False, help_text = "Si le membre accepte l'invitation, il est automatiquement ajouté en tant que en tant que manager")

Donc je veux que la table manager se remplisse lorsque le champ  AcceptInvit passe à True. Voici ce que j'ai essayé dans la méthode save() de la classe invitation.


def save(self, *args, **kwargs):
      if self.AcceptInvit == True :
         m = membre.objects.get(pk = self.idMembreDest.id)
         g = classe.objects.get(pk = self.idclasse.id)
         p = m.manager_set.create(classes = g.id, membres= m.id)
      super(invitation, self).save(*args, **kwargs)

ça aussi

def save(self, *args, **kwargs):
                if self.AcceptInvit == True :
                   manage = manager.objects.create(classes =self.idclasse.id, membres=self.idMembreDest.id)
                super(invitation, self).save(*args, **kwargs)

ou encore ça

def save(self, *args, **kwargs):
               if self.AcceptInvit == True :
                    manager = manager(classes=self.idclasse.id, membres=self.idMembreDest.id)
                    manager.save()

Mon code d'erreur est le suivant :

Cannot assign "1": "manager.classes" must be a "classe" instance.

Voila, si quelqu'un peut me venir en aide d'avance merci

Hors ligne

#2 05-10-2012 12:36:20

Bourhis Yves
Membre
Inscription : 03-10-2011
Messages : 46

Re : Mise à jour d'une table avec deux ForeignKey

Bonjour,

Le 05/10/2012 13:18, polo a écrit :
>

def save(self, *args, **kwargs):
>        if self.AcceptInvit == True :
>           m = membre.objects.get(pk = self.idMembreDest.id)
>           g = classe.objects.get(pk = self.idclasse.id)
>           p = m.manager_set.create(classes = g.id, membres= m.id)
>        super(invitation, self).save(*args, **kwargs)
>

J'aurais remplacé la dernière ligne par :
p = m.manager_set.create(classes = g, membres= m)

Cordialement.

Hors ligne

#3 08-10-2012 08:41:18

torrak
Membre
Inscription : 31-08-2011
Messages : 47

Re : Mise à jour d'une table avec deux ForeignKey

Merci,

C'est exactement ça !!

Hors ligne

Pied de page des forums