在Django中,我有以下型號:Django:如何替換/覆蓋/更新/更改FileField的文件?
from django.db import models
from django.core.files.base import File
import os, os.path
class Project(models.Model):
video = models.FileField(upload_to="media")
def replace_video(self):
"""Convert video to WebM format."""
# This is where the conversion takes place,
# returning a path to the new converted video
# that I wish to override the old one.
video_path = convert_video()
# Replace old video with new one,
# and remove original unconverted video and original copy of new video.
self.video.delete(save=True)
self.video.save(os.path.basename(video_path), File(open(video_path ,"wb")), save=True)
os.remove(video_path)
我希望能夠取代文件中的模型對象/實例的FileField 視頻。我寫的上述方法不起作用。一旦我刪除原始文件,我得到以下錯誤:
ValueError: The 'video' attribute has no file associated with it.
我如何爲一個更新替換該文件,並刪除原來的(沒有更多必要的)?
Side-Note:我找到了related issue,但沒有滿意的答案。
選項1聽起來真的是一個好主意。謝謝! – 2011-01-25 11:21:59