0

すでにアップロードされているファイルを上書きするために何かを作成しました:

class OverwriteStorage(FileSystemStorage):
def get_available_name(self, name):
    if self.exists(name):
        os.remove(os.path.join(settings.MEDIA_ROOT, name))
    return name

しかし、私のファイルはモデルにあります:

class Work (models.Model):
    file = models.FileField(storage=OverwriteStorage(), upload_to=path)
    group = models.ForeignKey(Group, related_name='work_list')

そして、新しいアップロードは新しいエントリを作成するので、私は持っています:

  • ファイルのないモデル(file.size ..に尋ねるとそのバグ)

  • 私の新しいモデル

ファイルが削除されたときにモデルを削除するにはどうすればよいですか?

FileSystemStorageプロセスを再度変更しようとしましたが、引数を使用できません(ドキュメントに記載されており、何時間もテストされています;))、保存プロセスも変更しようとしましたが、成功しませんでした。

4

2 に答える 2

0

トラブルシューティングを続行する前に確認するいくつかの事項:

于 2012-07-31T17:15:53.523 に答える
0

私の解決策:

for work in groupwork : #It is the list of work associate with my group
    try :
       path = work.file.path.lstrip(SITE_ROOT+'/'+MEDIA_ROOT+'/').rstrip(request.FILES['file'].name)
       deletedwork = groupwork.get(file=path+request.FILES['file'].name)
       deletedwork.delete()
    except:
       pass
于 2012-08-01T12:03:40.617 に答える