2016-06-18 7 views
0

私の小さなプロジェクトに問題があります。基本的には、自分のサイトにはユーザーアカウントがあり、それぞれが画像をサーバーにアップロードすることができます(ギャラリーのように言うことができます)。明らかに、私はすべての画像を1つのフォルダに表示したくないので、各ユーザの画像はそれぞれのディレクトリに移動するように実装しました。Djangoクイックファイルの削除

問題は、ユーザーがアップロードできるうちに、どのようにしてこれらのファイルを削除できるのかわかりません。

テーブル「ImageDoc」には、ファイルの名前を格納する「imgfile」という列があります。

view.py

def image_galleria(request): 
    LOCATION = request.user.username + "/" 

    if request.method == 'POST': 
     form = ImgDocForm(request.POST, request.FILES) 

     if form.is_valid(): 
      origin_form = form.cleaned_data["user_file"] 
      origin_name = origin_form.name 
      new_name = origin_name.split('.')[0] + ".jpg" 
      original_file = os.path.join(settings.MEDIA_ROOT+LOCATION, new_name) 

      original_name = ImageDoc(user_id=user_details.id, imgfile=new_name) 
      original_name.save() 

上記のコードは動作しますが、それは利用者のそれぞれのディレクトリに保存されます。しかし...

view.py

@login_required(login_url='sign_in') 
def delete_image(request, image_id): 
    imagex = ImageDoc.objects.get(id=image_id) 
    LOCATION = request.user.username + "/" 
    imagex.imgfile.delete(LOCATION) 

    return HttpResponse("Yes! Deleted file!") 

は、私は仕事しない、 ")(.delete" の様々なコンボを試してみました。私が間違っていることは何か考えていますか?

答えて

0

あなただけfileオブジェクトを取得し、それを削除したファイルを削除したい場合は...あなたのケースでは、

imagex.delete() 
+0

お返事ありがとうございます。しかし、私の問題は、削除機能は、ユーザーのディレクトリ内のファイル、一般的なメディアディレクトリだけを削除していないということです。 – Bob

0

する必要があります私は別の方法を使用して、それを解決したと思います。今後の参考のために:

views.py

@login_required(login_url='sign_in') 
def delete_image(request, image_id): 
    imagex = ImageDoc.objects.get(id=image_id) 

    imgfile = settings.MEDIA_ROOT + request.user.username + "/" + imagex.imgfile.name 
    os.remove(imgfile) 

    imagex.imgfile.delete() 
    imagex.delete() 

    return HttpResponseRedirect(reverse('image_galleria')) 

むしろラフソリューション、それが動作します私は考えます。ありがとう!

関連する問題