Shshzik
@Shshzik
Начинающий

Как в модель загрузить отдельное изображение?

Добрый день.
Есть такая форма:
class Layout(forms.Form):
    img = forms.ImageField()
    comment = forms.CharField(required=False, widget=forms.Textarea)

Она выводиться на страницу и её можно заполнить. После заполнения данные AJAX'ом отправляются на сервер. Через new FormData.
На сервере файл записывается на диск так:
with open(os.path.join(settings.MEDIA_ROOT, 'mockup', request.FILES['img'].name), 'wb+') as file:
    for chunk in request.FILES['img'].chunks():
        file.write(chunk)

Мне кажется должен быть более элегантный способ, но я другого просто не нашел.
После этого название файла и полный путь до него записывается в session.

Через некоторое время нужно эти данные записать в БД, в модель, в которой есть поле:
mockup = models.ImageField('Макет', blank=True, null=True)


Я делаю так ( вычитал на каком-то форуме ):
d_f = File(open(c._mockup['img']['url']))
new_order.mockup.save(c._mockup['img']['name'], d_f, save=True)

Но ничего не получается. Вопрос:
Как сделать это правильно?

UPD:
Ошибка поправлено. Забыл добавить флаги открытия в функцию open
Тогда, если можно, ответьте на другой вопрос - как сделать загрузку более элегантной.
  • Вопрос задан
  • 137 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы