在Django中更新父模型的auto_now DateTimeField
我有两个模型:Message(消息)和 Attachment(附件)。每个附件都和特定的消息关联,Attachment 模型里用一个叫 ForeignKey 的东西来表示这种关系。两个模型都有一个自动更新的时间字段,叫做 updated。我的想法是,当任何一个附件被保存时,也能把关联的消息的 updated 字段更新为当前时间。以下是我的代码:
def save(self):
super(Attachment, self).save()
self.message.updated = self.updated
这样做行不行?如果可以的话,能给我解释一下为什么吗?如果不行,我该怎么做呢?
3 个回答
1
带有 auto_now 的日期时间字段在你调用 save()
的时候会自动更新,所以你不需要手动去更新它们。Django 会为你处理这些事情。
7
正确的版本是:注意最后一行 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()
12
你还需要把消息保存下来。这样就应该可以正常工作了。