自分で手に入れました。
まずSummaryHistory
と呼ばれる新しいモデルを作成:
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()
を今、あなたが本を更新するたびに、要約の新しい増分バージョンを次のように今、初期モデルを拡張
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)
を変更されていない限り、特定の本が作成されます。
出典
2012-05-10 18:58:15
Alp
「コミュニティ」への参照は誤植のように見えます。これがうまくいく場合は、あなた自身の質問への回答を承認してください! :) – jathanism
ありがとう、私は間違った部分を修正しました。承認は2日後に機能します。 – Alp
Saveメソッドをオーバーライドする代わりにSignalsを使用することをお勧めします。別の回答でこれを行う方法については、https://docs.djangoproject.com/en/dev/topics/signals/ – dannyroa