Django Forms ImageFileld
Не могу обновить профиль , добавить новые данные , сохраняет либо в виде кортежа либо ошибка , подскажите в чем дело
forms.py
class UpdateProfileForm(forms.Form):
avatar = forms.ImageField(required=False)
about= forms.CharField(widget=forms.Textarea,max_length=255)
birthday = forms.DateField(required=False)
views.py
def updateprofile(request):
if request.method == 'POST':
form = UpdateProfileForm(request.POST,request.FILES)
if form.is_valid():
about = form.cleaned_data['about']
birthday = form.cleaned_data['birthday']
avatar = request.FILES.get('avatar')
print(type(about),about)
print(type(birthday),birthday)
print(type(avatar),avatar)
profile = Profile.objects.get(user=request.user)
# profile.avatar = avatar,
profile.about= about,
# profile.birthday=birthday,
profile.save()
return HttpResponseRedirect('/')
else:
form = UpdateProfileForm()
return render(request, 'updateprofile.html', {'form': form})
Ответы (1 шт):
Автор решения: JopaBoga
→ Ссылка
models
from django.db import models
class Profile(models.Model):
avatar = forms.ImageField(required=False)
about= forms.CharField(widget=forms.Textarea,max_length=255)
birthday = forms.DateField(required=False)
forms
class UpdateProfileForm(forms.ModelForm):
class Meta:
model = Profile
fields = '__all__'
views
class ProfileEdit(TemplateView):
template_name = 'profiles/profile_edit.html'
def get(self, request, *args, **kwargs):
context = super().get_context_data(**kwargs)
get_profile = Profile.objects.get(user=request.user)
formProfile = UpdateProfileForm(instance=get_profile)
context.update({'formProfile': formProfile})
return self.render_to_response(context)
def post(self, request, *args, **kwargs):
context = super().get_context_data(**kwargs)
get_profile = Profile.objects.get(user=request.user)
formProfile = UpdateProfileForm(self.request.POST,instance=get_profile)
if formProfile.is_valid():
formProfile.save()
return HttpResponseRedirect(reverse_lazy('profile_home'))
else:
print('NotValid')
return self.form_invalid(formProfile, **kwargs)
def form_invalid(self, formProfile, **kwargs):
context = self.get_context_data()
context.update({'formProfile': formProfile})
return self.render_to_response(context)