1

何が間違っているのかわかりません。ただし、エントリが削除されても、アップロードされたファイルとそれに関連するキャッシュは削除されません。

写真モデルからプロパティモデルへのFKを使用して、プロパティモデルのインラインの写真モデルがあります。'from sorl.thumbnail import ImageField'を使用して、デフォルトのDjangomodels.ImageFieldを置き換えています。

Django Adminで、写真のエントリを削除すると、エントリは削除されますが、そのエントリのファイルは削除されません。開発にDjangoのrunserverを使用していますが、エラーは表示されません。私が読んだことから、これらのファイルへの参照がまだない限り、エントリが削除された場合はこれらのファイルを削除する必要があります。私がまだ見ている唯一の参照は、thumbnail_kvstoreテーブルにあります。

誰かが私が欠けているものについて何か考えがありますか?

4

3 に答える 3

2

delete_fileメソッドは、Django<v1.2.5でのみ呼び出されます。sorl.thumbnail.ImageFieldファイル、サムネイル、およびキー値ストア参照(sorlサムネイルで使用)を削除する最良の方法は、次のsorl.thumbnail.delete関数を使用することです。sorl.thumbnail.delete(self.photo)

于 2011-02-23T00:18:40.610 に答える
1

ImageFieldfromはdjangoのsorl.thumbnail拡張である必要がありますFileField

django 1.2.5のリリースノートから:

以前のDjangoバージョンでは、FileFieldを含むモデルインスタンスが削除されると、FileFieldはそれ自体を使用して、バックエンドストレージからファイルも削除していました。これにより、ロールバックされたトランザクションや同じファイルを参照する異なるモデルのフィールドなど、いくつかの潜在的に深刻なデータ損失シナリオへの扉が開かれました。Django 1.2.5では、FileFieldがバックエンドストレージからファイルを削除することはありません。孤立したファイルのクリーンアップが必要な場合は、自分で処理する必要があります(たとえば、手動で実行するか、cronなどを介して定期的に実行するようにスケジュールできるカスタム管理コマンドを使用します)。

于 2011-02-16T07:13:47.807 に答える
0

django-filebrowserに問題があり、画像を新しいものに置き換えたときに、キャッシュされたファイルが更新されませんでした。したがって、私の場合、それはsorl-thumbnailの問題ではなく、django-filebrowserの問題でした。sorlは、ファイルのパスが変更された場合にのみサムネイルを再描画します。これを修正するには、ファイルブラウザのFILEBROWSER_OVERWRITE_EXISTING設定をFalseに設定します。

FILEBROWSER_OVERWRITE_EXISTING = False

これは、django-filebrowserを使用していない場合、少なくとも誰かが問題をデバッグするのに役立つ可能性があります。しかし、django-filebrowserの場合、これが進むべき道です。乾杯。

于 2014-11-11T18:44:32.420 に答える