2013-05-09 94 views
1

我想在保存记录时更新相关模型时间戳。这里是我的模型:更新相关模型中的auto_now DateTimeField

class Issue(models.Model): 
    issueTitle = models.CharField() 
    issueDescription = models.TextField() 
    issueCreatedDateTime = models.DateTimeField(auto_now_add=True) 

    def __unicode__(self): 
     return self.issueTitle 

class IssueHistory(models.Model): 
    fk_issueID = models.ForeignKey(Issue) 
    issuehistoryDetail = models.TextField() 
    issuehistoryCreatedBy = models.ForeignKey(User) 
    issuehistoryCreatedDateTime = models.DateTimeField(auto_now=True) 

    def __unicode__(self): 
     return self.fk_issueID 

    def save(self): #1.1 
     # Call parent's `save` function 
     # Record is saved like it would be normally, without the override 
     super(IssueHistory, self).save() #1.2 

     #This is where i believe i should be updating the "issueCreatedDateTime" to the same datetime 

post描述想要的,但最终的代码是不贴(除非我误解的话)。

为了进一步澄清,这是事件的期望的顺序:)

  1. 保存一个新的问题的历史记录
  2. 保存(被覆盖,使用自定义
  3. IssueHistory记录保存
  4. 相关问题记录的“issueCreatedDateTime”字段已更新为当前日期时间

我应该怎么做?

回答

0
def save(self): 
    super(IssueHistory, self).save() #1.2 

    # Set Issue issueCreatedDateTime to the same as IssueHistory issueCreatedDateTime 
    self.fk_issueID.issueCreatedDateTime = self.issuehistoryCreatedDateTime 
    # Save the Issue 
    self.fk_issueID.save() 
+0

谢谢,这工作,但我详细的模型是我的完整模型的子集。当我现在点击保存时,它也更新字段“issCreatedDateTime = models.DateTimeField(auto_now_add = True)”,这应该只发生在记录创建? (如果这应该是一个新的问题/帖子,让我知道) – James 2013-05-09 13:23:24

+0

我的错误......它充分发挥作用!谢谢!真棒。 “self.fk_issueID.issueCreatedDateTime = self.issuehistoryCreatedDateTime”这一行实际上应该使用issueUpdatedDateTime字段,尽管(对于我想要的) – James 2013-05-09 13:29:59