Не сохраняется изображение в django forms
Не понимаю почему после обработки формы где были заполнены все поля слетает поле image(пишет что нету значения), а все остальные поля сохраняются. Хотя в поле image я тоже добавлял значение.
views.py:
def signup(request):
if 'id' in request.session:
id_per = request.session['id']
account = User.objects.get(login=id_per)
else:
account = User.objects.get(login="Test")
if request.method == 'POST':
form = SignForm(request.POST)
if form.is_valid():
try:
User.objects.create(**form.cleaned_data)
return redirect('/login/')
except:
form.add_error(None, 'Invalid')
else:
form = SignForm()
context = {'account': account, 'form': form}
return render(request, 'base/signup.html', context)
forms.py:
class SignForm(forms.ModelForm):
class Meta:
model = User
fields = ['name', 'age', 'image', 'city', 'email', 'login', 'password', 'phone']
models.py:
class User(models.Model):
name = models.CharField(max_length=30, verbose_name="Имя")
age = models.IntegerField(verbose_name="Возраст")
image = models.ImageField(upload_to='images/', verbose_name="Изображение")
city = models.CharField(max_length=30, verbose_name="Город")
email = models.EmailField(max_length=254, verbose_name="Email")
login = models.CharField(max_length=30, verbose_name="login")
password = models.CharField(max_length=30, verbose_name="Password")
phone = models.CharField(max_length=20, verbose_name="Телефон")
favorite = models.ManyToManyField("Project", verbose_name="Избранные проекты")
def __str__(self):
return self.name
html:
<div class="registration-cssave" >
<form action="{% url 'signup'%}" class="registration-cssave__form" method = "post">
<div class = "password regist-div _anim-items bottom"><a class = "form-a" >Регистрация</a></div>
{% csrf_token %}
{% for f in form %}
<div class = "login form-group _anim-items bottom"><p><label class = "form-label" for="{{ f.id_for_label}}">{{f.label}}: </label>{{f}}</p></div>
<div class = "form-error">{{f.errors}}</div>
{% endfor %}
<div class = "field_button _anim-items bottom">
<button class="login_button">Зарегистрироваться</button>
</div>
</form>
</div>
Источник: Stack Overflow на русском