Хорошо, я пробовал почти все, и я не могу заставить это работать.
- У меня есть модель Django с ImageField на нем
- У меня есть код, который загружает изображение через HTTP (проверено и работает)
- Изображение сохраняется непосредственно в папку upload_to (то, что загружено в папку ImageField)
- Все, что мне нужно сделать, это связать уже существующий путь к файлу изображения с ImageField
Я написал этот код около 6 разных способов.
Проблема, с которой я сталкиваюсь, заключается в том, что весь код, который я пишу, приводит к следующему поведению: (1) Django создаст второй файл, (2) переименует новый файл, добавив _ в конец файла имя, то (3) не передавать какие-либо данные, оставляя в основном пустой файл с переименованным именем. В пути «upload_to» осталось 2 файла, один из которых является фактическим изображением, а другой - именем изображения, но пустым, и, конечно, путь ImageField установлен на пустой файл, который пытается создать Django. ,
Если это неясно, я попытаюсь проиллюстрировать:
## Image generation code runs....
/Upload
generated_image.jpg 4kb
## Attempt to set the ImageField path...
/Upload
generated_image.jpg 4kb
generated_image_.jpg 0kb
ImageField.Path = /Upload/generated_image_.jpg
Как я могу сделать это без попытки Django повторно сохранить файл? Что мне действительно нравится, так это что-то в этом роде ...
model.ImageField.path = generated_image_path
... но, конечно, это не работает.
И да, я рассмотрел другие вопросы, такие как этот, а также документ django в файле
ОБНОВЛЕНИЕ После дальнейшего тестирования, это происходит только при работе под Apache на Windows Server. Во время работы под «runserver» в XP он не выполняет это поведение.
Я в тупике.
Вот код, который успешно работает на XP ...
f = open(thumb_path, 'r')
model.thumbnail = File(f)
model.save()