Как сохранить файл изображения в django obj
Я пытаюсь установить файл изображения из локального пути в модель GameFilm
, но проблема в том, что print(File(open(path, 'rb')))
возвращает None
, поэтому когда я делаю obj.thumbnail = File(open(path, 'rb'))
, он просто устанавливает obj.thumbnail
значение None.
Моя модель
class GameFilm(models.Model):
thumbnail = models.ImageField(null=True, blank=True, upload_to='images/')
created_at = models.DateTimeField(default=timezone.now)
created_by = models.ForeignKey('users.User', on_delete=models.PROTECT, null=True, blank=True,
related_name='game_films')
title = models.CharField(max_length=150)
description = models.TextField()
film = models.FileField(upload_to='films/')
Функция "Моя проблема"
- Здесь я извлекаю изображение на миллисекунде 200 из видео по пути
video_path
. Затем я пытаюсь открыть файл и установить его по путиobj.thumbnail
. Затем django должен загрузить его на aws s3. Наконец, я удалю только что созданный локальный образ.
vidcap = cv2.VideoCapture(video_path)
millisecond = 200
vidcap.set(cv2.CAP_PROP_POS_MSEC, millisecond)
success, image = vidcap.read()
if success: cv2.imwrite("framed.jpg", image) # save frame as JPEG file
path = f'{settings.BASE_DIR}/framed.jpg'
obj = GameFilm.objects.get(id=1)
obj.thumbnail = File(open(path, 'rb'))
obj.save()
os.remove(f'{settings.BASE_DIR}/framed.jpg')