Найти - Пользователи
Полная версия: Связывание файла сгенерированного на сервере и FileField.
Начало » Django » Связывание файла сгенерированного на сервере и FileField.
1
fth
У меня стоит две схожих задачи:
1) записать некий текст из БД в файл связанный с FileField
2) связать сгенерированный сервером файл (архив) с FileField

Стандартное FieldFile.save требует наличия chunks, которые у строки и питоновского файла отсутствуют.
Что посоветуете делать в данной ситуации?
Переходить на FilePathField не очень бы хотелось…
fth
Решил пока так:
from django.core.files import File
import os

f = open(tmp_path, 'w')
f.write(some_text)
f.close()
f = open(tmp_path)
dj_f = File(f)
model_object.file.save('file', dj_f)
f.close()
os.remove(tmp_path)
Но хотелось бы всё же как-нибудь по красивее…
Doberman26rus
fth
Решил пока так:
from django.core.files import File
import os

f = open(tmp_path, 'w')
f.write(some_text)
f.close()
f = open(tmp_path)
dj_f = File(f)
model_object.file.save('file', dj_f)
f.close()
os.remove(tmp_path)
Но хотелось бы всё же как-нибудь по красивее…
f = open(tmp_path, 'w')
f.write(some_text)
f.close()
setattr(model_object, 'file', tmp_path)
model_object.save()
Создавай файл сразу в папке ‘upload_to’ так ты избежишь лишнего копирования.
os.remove(tmp_path) - этого делать не надо=)
fth
Благодарю!

И небольшое исправление, должно быть так:
path = grt_file_path(model_object)
f = open(MEDIA_ROOT + path, 'w')
f.write(some_text)
f.close()
setattr(model_object, 'file', path)
model_object.save()
Иначе файл не будет виден наружу.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB