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

StackOverflow https://stackoverflow.com/questions/20927

  •  09-06-2019
  •  | 
  •  

Вопрос

У меня есть две модели:Сообщение и вложение.Каждое вложение прикрепляется к определенному сообщению с помощью внешнего ключа в модели вложения.Обе модели имеют поле 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()
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top