わかりました、ほぼすべてを試しましたが、これを機能させることはできません。
- ImageFieldが設定されたDjangoモデルがあります
- HTTP経由で画像をダウンロードするコードがあります(テスト済みで動作)
- 画像は直接 'upload_to'フォルダーに保存されます(upload_toはImageFieldで設定されるものです)
- 私がする必要があるのは、既存の画像ファイルのパスをImageFieldに関連付けることだけです。
このコードは6つの方法で記述しました。
私が実行している問題は、私が書いているすべてのコードで、次の動作になります。(1)Djangoは2番目のファイルを作成します。(2)新しいファイルの名前を変更し、ファイルの末尾に_を追加します次に、(3)基本的に空の名前が変更されたファイルを残して、データを転送しません。「upload_to」パスに残っているのは2つのファイルです。1つは実際のイメージで、もう1つはイメージの名前ですが、空です。もちろん、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
...しかし、それはうまくいきません。
そして、はい、私はのような、ここで他の質問を経てきたこの1と同様に上のDjangoのドキュメントファイル
UPDATE さらにテストを行った後、この動作は、Windowsサーバー上のApacheで実行されている場合にのみ行われます。XPの「runserver」で実行している間は、この動作は実行されません。
私は困惑しています。
XPで正常に実行されるコードは次のとおりです...
f = open(thumb_path, 'r')
model.thumbnail = File(f)
model.save()