Как загрузить видеофайл в админку django ЧЕРЕЗ КОНСОЛЬ?
Есть модели Post и Result. Я хочу через консоль добавить файл (видео) в базу данных админки django.
С текстом делается так:
python manage.py shell
>>> from posts.models import Post, Result
>>> a = Post.objects.get(id = 3)
a.result_set.create(text = 'text')
models.py
class Post(models.Model):
video = models.FileField(upload_to='filesInput/')
csv = models.FileField(upload_to='filesInput/')
csvTimeL = models.CharField(max_length = 50, default = '00:00:02.02')
csvTimeR = models.CharField(max_length = 50, default = '00:00:02.4')
urlTimeL = models.CharField(max_length = 50, default = 3)
urlTimeR = models.CharField(max_length = 50, default = 8)
siteUrl = models.CharField(max_length = 300)
def __str__(self):
return self.siteUrl
class Result(models.Model):
inputData = models.ForeignKey(Post, on_delete = models.CASCADE)
resVideo = models.FileField()
def __str__(self):
return self.resVideo.url
Нужно вместо 'text' вставить файл на локалке.
Ответы (1 шт):
Автор решения: nomnoms12
→ Ссылка
Вам необходимо обернуть файл в специальный класс. Например, в ContentFile.
Пример:
from django.core.files.base import ContentFile
from .models import Post, Result
video_name = 'video.webm'
with open(video_name, 'rb') as f:
video_content = f.read()
post = Post()
post.video.save(video_name, ContentFile(video_content))
post.save()
resVideo_name = 'resVideo.webm'
with open(resVideo_name, 'rb') as f:
resVideo_content = f.read()
result = Result()
result.inputData = post
result.resVideo.save(resVideo_name, ContentFile(resVideo_content))
result.save()