Разрешить пользователю изменять свою картинку
Я сделал страницу редактирования пользователя, чтобы пользователь мог изменить модель (с помощью onetonefield)
Все работает, но ImageField не работает.
Всякий раз, когда я нажимаю кнопку отправки после того, как я загружаю некоторые файлы в поле изображения, поле изображения пользователя.
Это все еще пусто. Я не могу понять, почему это происходит, потому что с другими полями все в порядке.
Вот мой код
models.py
def user_path(instance, filename):
from random import choice
arr =[choice('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz') for _ in range(8)]
pid = ''.join(arr)
extension = filename.split('.')[-1]
return 'hs/%s/%s.%s' % (instance.owner.username, pid, extension)
views.py
def edit_profile(request):
content = {}
profile = request.user.get_username()
if request.method == 'POST':
form = EditProfileForm(request.POST, instance=request.user.userprofile)
form2 = EditUserForm (request.POST, instance=request.user)
content['form'] = form
content['form2'] = form2
if form.is_valid() and form2.is_valid():
new_user = form.save()
new_user2 = form2.save()
return redirect('/moc/change-profile')
else:
if form.is_valid() and form2.is_valid():
content['form.errors'] = form.errors
content['form2.errors'] = form2.errors
messages.warning(request, 'wrong')
return redirect('/moc/profile/edit/')
else:
form = EditProfileForm(instance=request.user)
form2 = EditUserForm(instance=request.user)
content['form']= form
content['form2'] = form2
return render(request, 'moc/editprofile.html', content)
forms.py
class EditProfileForm(forms.ModelForm):
class Meta:
model = userProfile
fields = ('nick','profileimage',)
def __init__(self, *args, **kwargs):
super(EditProfileForm, self).__init__(*args, **kwargs)
f = self.fields.get('user_permissions', None)
if f is not None:
f.queryset = f.queryset.select_related('content_type')
class EditUserForm(forms.ModelForm):
class Meta:
model = User
fields = ('email',)
def __init__(self, *args, **kwargs):
super(EditUserForm, self).__init__(*args, **kwargs)
f = self.fields.get('user_permissions', None)
if f is not None:
f.queryset = f.queryset.select_related('content_type')
editprofile.html
<form method="post" enctype='multipart/form-data'>
{% csrf_token %}
{{ form.as_p }}
{{ form2.as_p }}
<button type="submit">수정</button>
</form>
что не так с imagefield?