обновление поля auto_now DateTimeField в родительской модели с Django
Вопрос
У меня есть две модели:Сообщение и вложение.Каждое вложение прикрепляется к определенному сообщению с помощью внешнего ключа в модели вложения.Обе модели имеют поле auto_now DateTimeField с именем updated.Я пытаюсь сделать так, чтобы при сохранении любого вложения оно также устанавливало для обновленного поля в соответствующем сообщении значение now.Вот мой код:
def save(self):
super(Attachment, self).save()
self.message.updated = self.updated
Сработает ли это, и если вы можете объяснить мне, почему?Если нет, то как бы мне это сделать?
Решение
Затем вам также нужно будет сохранить сообщение.Тогда это то, что должно сработать.
Другие советы
Поля даты и времени с параметром auto_now автоматически обновляются при вызове save()
, поэтому вам не нужно обновлять их вручную.Django сделает эту работу за вас.
Подходящей версией для работы является:(внимание на последнюю строку 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()