Гаразд, я пробував майже все, і я не можу змусити це працювати.
- У мене є модель Django з ImageField на ній
- У мене є код, який завантажує зображення через HTTP (перевірено і працює)
- Зображення зберігається безпосередньо у папці "upload_to" (upload_to є тим, що встановлено на ImageField)
- Все, що мені потрібно зробити, - це пов’язати вже існуючий шлях до файлу зображень із полем ImageField
Я написав цей код про 6 різних способів.
Проблема, з якою я стикаюся, полягає у всьому коді, який я записую, результатами такої поведінки: (1) Django створить другий файл, (2) перейменує новий файл, додавши _ в кінці файлу name, тоді (3) не передавати жодну з даних, залишаючи в основному порожній перейменований файл. Що залишилось у шляху "upload_to" - це два файли, один, який є власне зображенням, і той, який є ім'ям зображення, але порожнім, і звичайно шлях 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
... але, звичайно, це не працює.
І так, я переглянув інші запитання тут, як це , а також документ про джанго у файлі
ОНОВЛЕННЯ Після подальшого тестування воно виконує лише таку поведінку під час роботи під Apache на Windows Server. Під час роботи під 'runserver' на XP він не виконує цю поведінку.
Я спотикався.
Ось код, який успішно працює на XP ...
f = open(thumb_path, 'r')
model.thumbnail = File(f)
model.save()