代码之家  ›  专栏  ›  技术社区  ›  Ellen Teapot

更新带有django的父模型中的auto-now datetimefield

  •  10
  • Ellen Teapot  · 技术社区  · 17 年前

    我有两个模型:消息和附件。每个附件都使用附件模型上的foreignkey附加到特定的消息上。两种型号都有一个名为“更新”的自动“现在”日期时间字段。我正在尝试这样做,以便在保存任何附件时,它还将关联邮件上的更新字段设置为“立即”。以下是我的代码:

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

    这行吗?如果你能向我解释,为什么?如果没有,我将如何实现这一点?

    3 回复  |  直到 10 年前
        1
  •  6
  •   John    17 年前

    您还需要保存消息。那就行了。

        2
  •  1
  •   zgoda    17 年前

    具有auto_的datetime字段现在在调用时自动更新 save() ,因此不需要手动更新它们。Django会为你做这项工作。

        3
  •  1
  •   Serjik bp3    10 年前

    正确的工作方式是:(注意最后一行) 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()