我有两个模型[1] TempFile(models.Model)
和Company(models.Model)
,当调用视图[2] save_records(request)
时,我想保存&移动将TempFile(models.Model)
中的图片/temporary_files/
移至文件夹Company(models.Model)
中的 /company_logo/
。
[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)
的{{1}}文件夹?
答案 0 :(得分:0)
如果您使用的是文件系统存储,那么最有效的选择是将文件移动到磁盘上(参见this part of the documentation):
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
)
请注意,temp_file.image
的路径也发生了变化 - 假设您在保存Company
对象后将删除该对象。