Tamam, her şeyin yakınında denedim ve işe yarayamıyorum.
- Bir ImageField ile bir Django modeli var
- HTTP aracılığıyla bir resim indiren kodum var (test edildi ve çalışıyor)
- Görüntü doğrudan 'upload_to' klasörüne kaydedilir (upload_to, ImageField üzerinde ayarlanan dosyadır)
- Tek yapmam gereken mevcut görüntü dosyası yolunu ImageField ile ilişkilendirmek.
Bu kodu yaklaşık 6 farklı şekilde yazdım.
Karşılaştığım sorun, yazdığım kodun tümünün aşağıdaki davranışla sonuçlanmasıdır: (1) Django 2. bir dosya oluşturur, (2) dosyanın sonuna _ ekleyerek yeni dosyayı yeniden adlandırır sonra (3) hiçbir veriyi temelde yeniden adlandırılmış boş bir dosya bırakarak aktarmaz. 'Upload_to' yolunda kalan, gerçek resim olan ve resmin adı olan, ancak boş olan 2 dosyadır ve tabii ki ImageField yolu Django'nun oluşturmaya çalıştığı boş dosyaya ayarlanmıştır .
Bu net değilse, açıklamaya çalışacağım:
## 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'nun dosyayı yeniden saklamaya çalışmadan bunu nasıl yapabilirim? Gerçekten istediğim şey bu etki için bir şey ...
model.ImageField.path = generated_image_path
... ama elbette bu işe yaramıyor.
Ve evet ben gibi burada diğer sorular geçtiniz bu bir ilgili olanların yanı sıra Django doc Dosya
GÜNCELLEME Daha fazla sınamadan sonra, bu davranış yalnızca Windows Server'da Apache altında çalışırken yapılır. XP'de 'runserver' altında çalışırken bu davranışı yürütmez.
Çok üzüldüm.
İşte XP'de başarıyla çalışan kod ...
f = open(thumb_path, 'r')
model.thumbnail = File(f)
model.save()