обновление auto_now DateTimeField в родительской модели с Django - PullRequest
10 голосов
/ 21 августа 2008

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

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

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

Ответы [ 3 ]

6 голосов
/ 21 августа 2008

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

1 голос
/ 31 октября 2015

Правильная версия для работы: (внимание к последней строке 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()
1 голос
/ 16 сентября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...