2008-08-21 25 views
9

J'ai deux modèles: Message et Pièce jointe. Chaque pièce jointe est attachée à un message spécifique, en utilisant une ForeignKey sur le modèle de pièce jointe. Les deux modèles ont un champ DateTimeField auto_now appelé mis à jour. J'essaie de faire en sorte que quand une pièce jointe est enregistrée, elle définit également le champ mis à jour sur le message associé à maintenant. Voici mon code:mettre à jour un auto_now DateTimeField dans un modèle parent w/Django

def save(self): 
    super(Attachment, self).save() 
    self.message.updated = self.updated 

Est-ce que cela fonctionnera, et si vous pouvez m'expliquer, pourquoi? Sinon, comment pourrais-je accomplir cela?

Répondre

6

Vous devrez également enregistrer le message. Alors ça devrait marcher.

1

Les champs DateTime avec auto_now sont automatiquement mis à jour lors de l'appel au save(), vous n'avez donc pas besoin de les mettre à jour manuellement. Django fera ce travail pour vous.

0

bonne version au travail est la suivante: (attention à la dernière ligne self.message.save())

class Message(models.Model): 
    updated = models.DateTimeField(auto_now = True) 
    ... 

class Attachment(models.Model): 
    updated = models.DateTimeField(auto_now = True) 
    message = models.ForeignKey(Message) 

    def save(self): 
     super(Attachment, self).save() 
     self.message.save()