Oke, saya sudah mencoba hampir semuanya dan saya tidak bisa menyelesaikannya.
- Saya memiliki model Django dengan ImageField di atasnya
- Saya memiliki kode yang mengunduh gambar melalui HTTP (teruji dan berfungsi)
- Gambar disimpan langsung ke folder 'upload_to' (upload_to menjadi yang diatur di ImageField)
- Yang perlu saya lakukan adalah menghubungkan jalur file gambar yang sudah ada dengan ImageField
Saya telah menulis kode ini tentang 6 cara berbeda.
Masalah yang saya hadapi adalah semua kode yang saya tulis menghasilkan perilaku berikut: (1) Django akan membuat file ke-2, (2) mengganti nama file baru, menambahkan _ ke akhir file nama, maka (3) tidak mentransfer salah satu data dari meninggalkannya pada dasarnya file kosong yang diberi nama baru. Apa yang tersisa di jalur 'upload_to' adalah 2 file, satu yang merupakan gambar aktual, dan satu yang adalah nama gambar, tetapi kosong, dan tentu saja jalur ImageField diatur ke file kosong yang coba dibuat oleh Django untuk dibuat .
Jika tidak jelas, saya akan mencoba mengilustrasikan:
## 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
Bagaimana saya bisa melakukan ini tanpa Django mencoba menyimpan kembali file tersebut? Yang saya benar-benar suka adalah sesuatu untuk efek ini ...
model.ImageField.path = generated_image_path
... tapi tentu saja itu tidak berhasil.
Dan ya saya telah melalui pertanyaan-pertanyaan lain di sini seperti ini serta dokumen Django pada File
PEMBARUAN Setelah pengujian lebih lanjut, ini hanya melakukan perilaku ini ketika berjalan di bawah Apache pada Windows Server. Saat berjalan di bawah 'runserver' di XP itu tidak menjalankan perilaku ini.
Saya bingung.
Berikut adalah kode yang berjalan dengan sukses di XP ...
f = open(thumb_path, 'r')
model.thumbnail = File(f)
model.save()