明白了。
首先創建SummaryHistory
一個新模型:
class SummaryHistory(models.Model):
version = models.IntegerField(editable=False)
book = models.ForeignKey('Book')
text = models.TextField()
class Meta:
unique_together = ('version', 'book',)
def save(self, *args, **kwargs):
# start with version 1 and increment it for each book
current_version = SummaryHistory.objects.filter(book=self.book).order_by('-version')[:1]
self.version = current_version[0].version + 1 if current_version else 1
super(SummaryHistory, self).save(*args, **kwargs)
現在延長最初的模型如下:
class Book(models.Model):
title = models.CharField(max_length=100)
summary = models.TextField()
def summary_history(self):
return SummaryHistory.objects.filter(book=self).order_by('-version')
def save(self, *args, **kwargs):
super(Book, self).save(*args, **kwargs)
# save summary history
summary_history = self.summary_history()
if not summary_history or self.summary != summary_history[0].text:
newSummary = SummaryHistory(book=self, text=self.summary)
newSummary.save()
現在,每次更新一本書,總結新增加的版本因爲具體的書會被創建,除非它沒有改變。
來源
2012-05-10 18:58:15
Alp
看起來不錯,但對「社區」的引用看起來像一個錯別字。如果這適用於您,請批准您自己的問題答案! :) – jathanism
謝謝,我修正了錯誤的部分。 2天后審批工作。 – Alp
我推薦使用Signals而不是重寫Save方法。 https://docs.djangoproject.com/en/dev/topics/signals/ – dannyroa