2017-12-09 5 views
1

나는이 두 가지 모델 [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") 
    ... 

logo이 경로를 저장하는 동안 [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 
      ... 
     ) 

이 방법의 문제점이있어 폴더는 /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 개체를 저장하면 해당 개체가 삭제됩니다.