Zapisywanie programowe obrazu w Django ImageField
Ok, próbowałem prawie wszystko i nie mogę tego zrobić.
Mam na nim model Django z ImageFieldMam kod, który pobiera obraz przez HTTP (testowany i działa)Obraz jest zapisywany bezpośrednio w folderze „upload_to” (upload_to jest tym, który jest ustawiony w ImageField)Wszystko, co muszę zrobić, to powiązać istniejącą ścieżkę pliku obrazu z ImageFieldNapisałem ten kod na 6 różnych sposobów.
Problem, na który wpadam, to 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 nazwa, a następnie (3) nie przesyła żadnych danych, pozostawiając w zasadzie pusty plik o zmienionej nazwie. W ścieżce „upload_to” pozostały 2 pliki, jeden będący rzeczywistym obrazem, a drugi będący nazwą obrazu, ale 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ę bym chciał, to coś takiego ...
model.ImageField.path = generated_image_path
... ale oczywiście to nie działa.
I tak, przeszedłem tutaj przez inne pytaniaten tak samo jak doc djangoPlik
AKTUALIZACJA Po dalszych testach zachowuje się tylko podczas uruchamiania w Apache na Windows Server. Działając pod „runserver” na XP, nie wykonuje tego zachowania.
Jestem zakłopotany.
Oto kod, który działa pomyślnie na XP ...
f = open(thumb_path, 'r')
model.thumbnail = File(f)
model.save()