2010-03-13 7 views
0

i ont la fonction suivante pour remplacer la valeur par défaut fonction de sauvegarde dans un match de modèleDjango incapable de mettre à jour le modèle

def save(self, *args, **kwargs): 
    if self.Match_Status == "F": 
     Team.objects.filter(pk=self.Team_one.id).update(Played=F('Played')+1) 
     Team.objects.filter(pk=self.Team_two.id).update(Played=F('Played')+1) 
     if self.Winner !="": 
      Team.objects.filter(pk=self.Winner.id).update(Win=F('Win')+1, Points=F('Points')+3) 
     else: 
      return 
    if self.Match_Status == "D": 
     Team.objects.filter(pk=self.Team_one.id).update(Played=F('Played')+1, Draw = F('Draw')+1, Points=F('Points')+1) 
     Team.objects.filter(pk=self.Team_two.id).update(Played=F('Played')+1, Draw = F('Draw')+1, Points=F('Points')+1) 
    super(Match, self).save(*args, **kwargs) 

Je suis en mesure d'enregistrer le modèle de correspondance très bien, mais le modèle de l'équipe ne semble pas être mise à jour à tout et aucune erreur n'est lancée. Est-ce que j'ai râté quelque chose ?

+0

Comme Daniel dit, il n'y a rien qui saute comme mal, mais nous ne savons pas vraiment quoi que ce soit au sujet de votre code dans son ensemble. Il serait préférable que vous puissiez fournir un exemple simplifié complet. Voir: http://www.yoda.arachsys.com/csharp/complete.html (Jon a écrit cela dans le contexte de C#, mais cela s'applique à n'importe quelle langue.) –

Répondre

1

ajouter ceci dans ur admin.py

def save_model(self, request ,obj ,form,change): 
    if obj.Match_Status == "F": 
    Team.objects.filter(pk=obj.Team_one.id).update(Played=F('Played')+1) 
    Team.objects.filter(pk=obj.Team_two.id).update(Played=F('Played')+1) 
    if obj.Winner !="": 
     Team.objects.filter(pk=obj.Winner.id).update(Win=F('Win')+1, Points=F('Points')+3) 
    else: 
     return 
    if obj.Match_Status == "D": 
    Team.objects.filter(pk=obj.Team_one.id).update(Played=F('Played')+1, Draw = F('Draw')+1, Points=F('Points')+1) 
     Team.objects.filter(pk=obj.Team_two.id).update(Played=F('Played')+1, Draw = F('Draw')+1, Points=F('Points')+1) 
    obj.save() 
0

Il n'y a rien d'anormal avec votre méthode. Les astuces de débogage habituelles s'appliquent: êtes-vous sûr que la méthode est réellement appelée? Êtes-vous sûr que l'objet Match a un état de correspondance F ou D? Mettez dans quelques déclarations d'impression pour être sûr.

Questions connexes