mise à jour d'un DateTimeField auto_now dans un modèle parent avec Django
Question
J'ai deux modèles :Message et pièce jointe.Chaque pièce jointe est jointe à un message spécifique, à l'aide d'une ForeignKey sur le modèle Attachment.Les deux modèles ont un DateTimeField auto_now appelé update.J'essaie de faire en sorte que lorsqu'une pièce jointe est enregistrée, le champ mis à jour du message associé soit également défini sur maintenant.Voici mon code :
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 y parvenir ?
La solution
Vous devrez également ensuite enregistrer le message.Alors ça devrait marcher.
Autres conseils
Les champs DateTime avec auto_now sont automatiquement mis à jour lors de l'appel save()
, vous n'avez donc pas besoin de les mettre à jour manuellement.Django fera ce travail pour vous.
La version appropriée pour fonctionner est :(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()