나는 'mugshot'이미지를 보유하고있는 사용자 프로파일 모델을 가지고 있습니다. modelForm을 사용하여 프로필 업데이트 양식을 제공하고 있습니다. 작업 양식을 작성하는 것은 쉬웠지만 이제 이미지에 몇 가지 비틀기가 필요합니다.ModelForm을 사용하여 이미지를 바꾸는 방법은 무엇입니까?
1) 사용자가 제공 한 파일 이름으로 저장됩니다. 오히려 사용할 파일 이름을 지정합니다. 나는 단지 모델의 PK와 같은 파일 확장자를 사용한다고 생각했다. 예 : "443.jpg"
2) 밑줄을 추가하지 말고 기존 이미지를 대체해야한다. "443 ___. jpg".
이form = MemberProfileForm(request.POST, request.FILES, instance=request.member)
if form.is_valid():
if request.FILES.get("image"):
form.image.name = 'poobar.jpg'
form.save()
return HttpResponseRedirect(reverse('my-profile'))
그러나 '이미지'를 modelform (AttributeError)에 존재하지 않는
내가 재 작업해야합니까 :이 같은
class Member(models.Model):
home_phone = models.CharField(max_length=10, blank=True)
image = models.ImageField(upload_to='members', default="default.png")
...
class MemberProfileForm(forms.ModelForm):
home_phone = AUPhoneNumberField(required=False)
class Meta:
model = Member
exclude = ('email','password','create_date','last_login','is_active')
내가 기대했다 뭔가 걸리는 모든 것 이 작은 조정을 위해 "modelform"대신 "form"을 사용하는 것이 전부입니까, 아니면 이미지 저장을 제어하는 쉬운 방법이 있습니까?
x --------------------------------------------- -------------------------------------------------- 내가 'request.member'을이 곳 대부분의 사람들은 아마, 'request.user'을 원하는 제외
이 그것을 해결하는 것 ...
form = MemberProfileForm(request.POST, request.FILES, instance=request.member)
if form.is_valid():
if form.cleaned_data['image']:
(path, extension) = os.path.splitext(form.cleaned_data['image'].name)
form.cleaned_data['image'].name = ('%s%s' % (request.member.id, extension))
request.member.image.delete()
form.save()
.... 폼 인스턴스 kwarg 전달하여
오, 거기 우리가 간다. 그게 전부다. (1). 그런 다음 (2)에서 modelform 내부의 _image_ save 루틴에 'save = False'를 전달하는 방법을 볼 수 없지만 동일한 결과를 얻는 기존 이미지를 먼저 삭제할 수 있습니다. 해결책을 보여주는 편집 질문을보십시오. –