updating an auto_now DateTimeField in a parent model w/ Django

Question!

I've got two models: Message and Attachment. Each attachment is attached to a specific message, using a ForeignKey on the Attachment model. Both models have an auto_now DateTimeField called updated. I'm trying to make it so that when any attachment is saved, it also sets the updated field on the associated message to now. Here's my code:

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

Will this work, and if you can explain it to me, why? If not, how would I accomplish this?



Answers

Proper version to work is: (attention to last line 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()
By : Serjik


DateTime fields with auto_now are automatically updated upon calling save(), so you do not need to update them manually. Django will do this work for you.

By : zgoda


You would also need to then save the message. Then it that should work.

By : John


This video can help you solving your question :)
By: admin