前提・実現したいこと
データベースに画像を保存する際に、
画像のアップロード先を親のidで管理すれば大量の画像を保存する際にアクセスが早くなるのではないかと考えています。
そのうえで以下のようなモデルとフォームを構築しました。
python
1class Member(models.Model): 2 group = models.ForeignKey("Group", on_delete=models.CASCADE) 3 file = models.ImageField(upload_to=f'files/images/groups/{Group.id}'.
python
1class PhotoForm(forms.ModelForm): 2 class Meta: 3 model = Member 4 fields = ('file', 'x', 'y', 'width', 'height', ) 5 def save(self): 6 photo = super(PhotoForm, self).save() 7 8 x = self.cleaned_data.get('x') 9 y = self.cleaned_data.get('y') 10 w = self.cleaned_data.get('width') 11 h = self.cleaned_data.get('height') 12 13 os.makedirs(photo.file.path, exist_ok=True) 14 15 image = Image.open(photo.file) 16 cropped_image = image.crop((x, y, w+x, h+y)) 17 resized_image = cropped_image.resize((200, 200), Image.ANTIALIAS) 18 resized_image.save(photo.file.path) 19 20 return photo 21
発生している問題・エラーメッセージ
form.save()←保存できない OSError [WinError 123] ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。 'C:\Users\~~~~~\media\files\images\groups\<django.db.models.query_utils.DeferredAttribute object at 0x0000023D4A2015F8>'
解決の糸口
form の save関数 か model のどちらかに工夫を加える必要があると思われるのですが、
解決方法がわかりません、、同じような課題を経験した方がいればご助言いただきたいです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。