2008-08-21 126 views
9

我有兩個模型:消息和附件。使用附件模型上的ForeignKey將每個附件附加到特定消息。兩種模型都有一個名爲更新的auto_now DateTimeField。我試圖做到這一點,以便當保存任何附件時,它還將關聯消息上的更新字段設置爲現在。這是我的代碼:更新父模型中的auto_now DateTimeField w/Django

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

請問這項工作,如果你能解釋給我,爲什麼?如果不是,我將如何實現這一目標?

回答

6

您還需要保存該消息。那麼它應該工作。

1

帶有auto_now的DateTime字段在調用save()時自動更新,因此您不需要手動更新它們。 Django會爲你做這項工作。

0

正確版本的工作是:(注意最後一行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()