2

私のプロジェクトでは、アップロードされたファイルを処理する必要があり、各ファイルバージョンの履歴が必要です。そして、1つのビューで履歴を表示します。私のモデルでは、各ファイルにバージョン、名前、パスがあります。このファイルは、1対多の関係で他のクラス「A」に関連付けられています。以前のファイルを置き換える一種の更新機能が必要です。また、ファイルとそれに関連するモデルインスタンス(クラスA)のすべての特性を含む履歴にアクセスできるようにしたいです。

やり方がわかりません。djangoの復帰とdjangoの改訂について聞いた。あなたは私に何をアドバイスしますか?

ありがとうございました

4

1 に答える 1

0

いくつかの方法でそれを行うことができます:

1.手動で追跡するドキュメント ファイル モデルを使用できます。

class DocumentFile(CachedModel):
   content_type    = models.ForeignKey(ContentType, null=True, blank=True)
   object_id       = models.PositiveIntegerField(null=True, blank=True)
   content_object  = generic.GenericForeignKey(ct_field='content_type', fk_field='object_id')       
   file = models.FileField(upload_to= wherever )
   version = models.PositiveIntegerField(default=1)

   class Meta:
        db_table = 'document_file'
        verbose_name = 'Document File'
        unique_together = ('document', 'version')

new_version という post_save シグナルを使用して、ドキュメントの現在のリビジョン番号を更新できます。

2. Amazon の s3 を使用してドキュメントを保存し、リビジョン番号の get パラメータを渡してアクセスすることもできます (これはコストのかかる方法です)。

于 2012-08-29T21:01:42.563 に答える