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?

Was it helpful?

Solution

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

OTHER TIPS

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.

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()
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top