2

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でそのようなことをもっと簡潔に行う方法があるのだろうかと思っていました。

4

1 に答える 1

6

に設定article.pkするだけNoneで、保存すると新しいエントリが作成されます。

于 2012-06-17T11:40:29.170 に答える