Ok, próbowałem już prawie wszystkiego i nie mogę tego uruchomić.
- Mam model Django z ImageField
- Mam kod, który pobiera obraz przez HTTP (przetestowany i działa)
- Obraz jest zapisywany bezpośrednio w folderze „upload_to” (upload_to to ten ustawiony w ImageField)
- Wszystko, co muszę zrobić, to powiązać już istniejącą ścieżkę pliku obrazu z ImageField
Napisałem ten kod na około 6 różnych sposobów.
Problem, na który napotykam, polega na tym, że cały kod, który piszę, powoduje następujące zachowanie: (1) Django utworzy drugi plik, (2) zmieni nazwę nowego pliku, dodając _ na końcu pliku name, a następnie (3) nie przesyłaj żadnych danych, pozostawiając w zasadzie pusty plik o zmienionej nazwie. W ścieżce „upload_to” pozostały 2 pliki, jeden rzeczywisty obraz i jeden, który jest nazwą obrazu, ale jest pusty, i oczywiście ścieżka ImageField jest ustawiona na pusty plik, który Django próbuje utworzyć .
W przypadku niejasności postaram się zilustrować:
## 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
Jak mogę to zrobić bez konieczności ponownego zapisywania pliku przez Django? To, co naprawdę chciałbym, to coś w tym celu ...
model.ImageField.path = generated_image_path
... ale to oczywiście nie działa.
I tak, przeszedłem przez inne pytania tutaj, takie jak to, a także dokument django na temat pliku
AKTUALIZACJA Po dalszych testach zachowuje się tak tylko, gdy działa pod Apache na Windows Server. Podczas działania pod „runserver” na XP nie wykonuje tego zachowania.
Jestem zakłopotany.
Oto kod, który działa poprawnie na XP ...
f = open(thumb_path, 'r')
model.thumbnail = File(f)
model.save()