aggiornando un auto_now DateTimeField in un modello principale con Django
Domanda
Ho due modelli:Messaggio e allegato.Ogni allegato è allegato a un messaggio specifico, utilizzando una ForeignKey sul modello Allegato.Entrambi i modelli hanno un auto_now DateTimeField chiamato aggiornato.Sto cercando di fare in modo che quando viene salvato un allegato, imposti anche il campo aggiornato sul messaggio associato su adesso.Ecco il mio codice:
def save(self):
super(Attachment, self).save()
self.message.updated = self.updated
Funzionerà e, se puoi spiegarmelo, perché?In caso contrario, come potrei realizzare ciò?
Soluzione
Dovresti anche salvare il messaggio.Allora dovrebbe funzionare.
Altri suggerimenti
I campi DateTime con auto_now vengono aggiornati automaticamente al momento della chiamata save()
, quindi non è necessario aggiornarli manualmente.Django farà questo lavoro per te.
La versione corretta per funzionare è:(attenzione all'ultima riga 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()