VRT360 - Как сохранить поле с models.FileField в Django

Достаточно долго боролся чтобы пронять как сохранить поле с models.FileField.

Исчерпывающей информации ни где не мог найти. Натыкался на обрывочные данные, но целого примера не было. Пишу может кому-то будет полезно.

Есть такая модель

class VacancySync(models.Model):
datetime_sync = models.DateTimeField(verbose_name='Время синхронизации', null=True, blank=True)
data_file = models.FileField(verbose_name='Файл синхронизации')
status = models.PositiveSmallIntegerField(verbose_name='Статус', choices=((0, 'Загружен'), (1, 'В работе'), (2, 'Ошибка'), (3, 'Готово')), default=0)
log = models.TextField(verbose_name='Лог', null=True, blank=True)

 

Стоит задача программно создать запись.

Решение:

'''
Подключаем необходимые модули, Классы, функции
'''

from django.core.files import File
from django.core.files.storage import default_storage
from job_catalog.models import VacancySync


''' Код создания объекта с полем models.FileField в Django ''' f = open('kftp/wp_post_yandex') path = default_storage.save('media/wp_post_yandex', File(f)) VacancySync.objects.create(data_file=path)