Сведения о вопросе

None

09:14, 24th August, 2020

Теги

python   database   django   orm    

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

Просмотров: 544   Ответов: 3

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

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

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



  Сведения об ответе

прога

13:36, 9th August, 2020

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


  Сведения об ответе

ASER

23:14, 27th August, 2020

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


  Сведения об ответе

appple

20:24, 5th August, 2020

Правильная версия для работы: (внимание на последнюю строку 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()


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться