5
관련 질문을 살펴 보았지만 답변이 작동하지 않는 것 같습니다. 사용자의 프로필 이미지를 업로드하고 현재 이미지를 덮어 쓰려고합니다. 이미지를 저장할 때 파일 이름을 사용자 ID로 변경하고 싶습니다. 이미지가 현재 형태로 업로드되지만 기존 이미지를 대체하지는 않습니다 (예 : 2_1.png로 저장 됨). 여기Django ModelForm을 사용하여 프로필 이미지 업로드
class PhotoForm(forms.ModelForm):
def save(self):
content_type = self.cleaned_data['photo'].content_type.split('/')[-1]
filename = '%d.%s' % (self.instance.user.id, content_type)
instance = super(PhotoForm, self).save(commit=False)
instance.photo = SimpleUploadedFile(filename, self.cleaned_data['photo'].read(), content_type)
instance.save()
return instance
class Meta:
model = UserProfile
fields = ('photo',)
def photo_form(request):
if request.method == 'POST':
form = PhotoForm(data=request.POST, file=request.FILES, instance=request.user.get_profile())
if form.is_valid():
form.save()
else:
form = PhotoForm()
return render(request, 'photo_form.html', {'form': form})
감사합니다. 그 대답은 내가 만났지만 ModelForm이 저장을 처리하기를 원했습니다. 필자는 FileSystemStorage를 서브 클래 싱하여 기존 이미지를 덮어 쓰고 UserProfile Model 아래의 imagefield에 새 저장소를 사용하게되었습니다. – dvw
오케이. 네가 듣는 것이 좋다! – randrumree
코드에 약간의 오타가 있습니다. dest.write (청크) –