私のプロジェクトでは、学校モデルと学校卒業モデルを持つアプリがあります。djangoはsetattrを使ってイメージファイルの場所を変更します
seal_image = models.ImageField(upload_to="sealimgs", null=True, blank=True)
logo_image = models.ImageField(upload_to="logos", null=True, blank=True)
schoolsuggestionモデルは、対応する学校のフィールドが何であるかのためのフィールドを有し、イメージフィールド:
学校モデルはロゴ、シールなどのような様々な画像のためのフィールドを、有しています。
学校の提案が承認されfield_name = models.CharField(max_length=255, default="")
image_field = models.ImageField(upload_to='img', null=True, blank=True)
それがGETATTR(FIELD_NAME)を介して関連する学校のフィールドを取得し、SETATTR(FIELD_NAME、image_field)とそれを設定するように、私は(私は構文を簡素化していたセーブ上書きしますが、あなたはその考えを得る)。
問題は、私がsetattrを使用していてイメージフィールド固有の保存ではなく正しいディレクトリにアップロードしているため、ファイルがまだimgに保存されているということです。
どうすればいいですか?何らかの形で属性のupload_to値を取得し、そのファイルパスでイメージを何らかの形で保存してから、resavedイメージでsetattrを使用することはできますが、最初の2つの方法を理解することはできません。
だからあなたの問題は右、インスタンスがモデルフィールドの代わりに、インスタンスフィールドの値にアクセスする方法ですか? – okm
もしそうなら、あなたの解決策は問題ありません。 'os.path.join'を使ってパスを連結してください。 – okm