2013-10-07 45 views
2

在我的Django模型中創建「更新歷史」字段的最佳方法是什麼,以便我可以跟蹤多個更新日期?django在一個字段中的多個更新日期

我可以使用last_updated = models.DateTimeField()創建一個模型,然後讓我的視圖將日期時間保存到它,但是如果我想記錄用戶何時更新了他們的帖子,而不僅僅是最近保存?

它應該是一個ManyToManyField或CharField嗎?

回答

2

它不應該是一個領域。相反,創建一個模型,將使用一個ForeignKey引用您的主要型號:

class YourModel(models.Model): 
    name = models.CharField(max_length=100) 

class YourModelUpdateHistory(models.Model): 
    your_model = models.ForeignKey('YourModel') 
    updated = models.DateTimeField() 

這樣你可以有每個模型多個日期,同時保持數據庫中正確歸。它還將允許您將來添加其他字段以及有關每個更新的其他信息(例如誰更新了該對象)。

無論何時更新YourModel對象,您都應該創建一個新的YourModelUpdateHistory對象。你甚至可以將它設置所以這是自動完成的,這要歸功於save()方法(這是由Django的每次叫你保存對象):

from django.utils import timezone 

class YourModel(models.Model): 
    name = models.CharField(max_length=100) 

    def save(self, *args, **kwargs): 
     super(YourModel, self).save(*args, **kwargs) 
     YourModelUpdateHistory.objects.create(your_model=self, updated=timezone.now()) 
+0

OK,我想我得到它 - 只要YourModel保存,那麼YourModelUpdateHistory中的新條目將使用當前的日期時間創建,我可以在保存更新時在View中設置該日期時間? –

+0

我更新了我的帖子,每次更新YourModel時都會自動創建YourModelUpdateHistory模型。 –

+0

謝謝!我將在今晚更新這個當我回家 –

相關問題