обновление auto_now DateTimeField в родительской модели с Django

У меня есть две модели: сообщение и вложение. Каждое вложение прикрепляется к определенному сообщению, используя ForeignKey в модели Attachment. Обе модели имеют auto_now DateTimeField с именем updated. Я пытаюсь сделать так, чтобы при сохранении любого вложения оно также устанавливало обновленное поле в связанном сообщении на данный момент. Вот мой код:

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

Будет ли это работать, и если вы можете объяснить мне, почему? Если нет, как бы я это сделал?

21.08.2008 19:41:57
3 ОТВЕТА
РЕШЕНИЕ

Вам также необходимо сохранить сообщение. Тогда это то, что должно работать.

8
21.08.2008 19:57:36

Поля DateTime с auto_now автоматически обновляются при вызове save(), поэтому вам не нужно обновлять их вручную. Джанго сделает эту работу за вас.

1
16.09.2008 13:44:51

Правильная версия для работы: (внимание к последней строке 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()
3
1.12.2015 14:03:26