私のプロジェクトでは、学校モデルと学校提案モデルを備えたアプリがあります。
学校モデルには、ロゴ、シールなど、さまざまな画像のフィールドがあります。
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)
学校の提案が承認されたら、save を上書きして、関連する学校のフィールドを getattr(field_name) 経由で取得し、setattr(field_name, image_field) で設定するようにしました (構文は簡略化していますが、お分かりいただけると思います)。
問題は、ファイルがまだ img に保存されていることです。おそらく、正しいディレクトリにアップロードされた画像フィールド固有の保存ではなく、setattr を使用しているためです。
では、これを行うにはどうすればよいですか?何らかの方法で属性の upload_to 値を取得し、そのファイルパスで画像を再保存し、再保存した画像で setattr を使用できることは理にかなっていますが、最初の 2 つの方法がわかりません。