2017-12-09 17 views
1

I持って二つのモデル[1] TempFile(models.Model)Company(models.Model)、ときビュー[2]私は/temporary_files/フォルダ/company_logo/であるCompany(models.Model)にフォルダ内にあるTempFile(models.Model)から&移動画像を保存したいと呼ばれるsave_records(request)ファイルをモデルのフォルダから別のフォルダに移動する方法は?

[1] models.py

class Company(models.Model): 
    logo = models.FileField(upload_to="company_logo") 
    ... 

class TempFile(models.Model): 
    unique_id = models.CharField(max_length=8) 
    image = models.FileField(upload_to="temporary_files") 
    ... 

[2] views.py

def save_records(request): 
    if request.method == 'POST': 
     temp_file = TempFile.objects.get(unique_id=request.session['uuid']) 

     Company.objects.create(
      logo = temp_file.image 
      ... 
     ) 

logoはのパスを保存しながらここで、この方法の問題ですフォルダは/temporary_files/のままです。 Company(models.Model)company_logoフォルダに品質の低下やパフォーマンスの問題がなく画像を保存または移動する方法を知りたいですか?

答えて

0

あなたは、ファイル・システム・ストレージを使用している場合は、最も効率的なオプションは、ディスク上のファイルを移動することです(this part of the documentationを参照してください):temp_file.imageのパスも変更されていること

import os 
from django.conf import settings 

temp_file = TempFile.objects.get(unique_id=request.session['uuid']) 

# Move the file 
old_path = temp_file.image.path 
filename = os.path.basename(old_path) 
new_path = os.path.join(settings.MEDIA_ROOT, 'company_logo', filename) 
os.rename(old_path, new_path) 
temp_file.save() 

Company.objects.create(
    logo = temp_file.image 
) 

注 - おそらくあなたがなりますオブジェクトを保存した後でそのオブジェクトを削除します。Company

関連する問題