ArticleVersion
プロジェクトに次のように定義されたモデルがあるとします。
class ArticleVersion(models.Model):
article = models.ForeignKey(Article)
version = models.PositiveIntegerField()
content = models.TextField()
created = models.DateTimeField(auto_now_add=True)
media_type = models.ForeignKey(MediaType)
author = models.ForeignKey(User, null=True)
ユーザーがこのモデルのフォームに入力するときに、フォームのバージョンの内容が異なるかどうかを確認し、異なる場合は新しいバージョンを作成します。実は今はこんな感じ
if self.old_content != updated_version.content:
# create new version if content is different
updated_version = self.article.articleversion_set.create(
article=self.article,
version=self.article.latest_version.version + 1,
content=updated_version.content,
media_type=updated_version.media_type,
author=updated_version.author
)
ただし、モデルにさらにフィールドを追加すると、冗長になりすぎます。Djangoでそのようなことをもっと簡潔に行う方法があるのだろうかと思っていました。