En Django, tengo el siguiente modelo:Django: ¿Cómo reemplazar/sobrescribir/actualizar/cambiar un archivo de 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)
Quiero ser capaz de reemplazar el archivo de vídeo en el FileField en un modelo de objeto/instancia. El método anterior que he escrito no funciona. Una vez que elimino el archivo original, me sale el siguiente error:
ValueError: The 'video' attribute has no file associated with it.
¿Cómo puedo reemplazar el archivo con una actualizada y retire el original (no más necesario)?
Nota-lateral: He encontrado un related issue, pero sin una respuesta satisfactoria.
Opción 1 Realmente suena como una buena idea. ¡Gracias! –