У меня есть страница в django, которая позволяет загружать изображение пользователю, изображение правильно сохраняется в папке stati c и также отображается правильно, проблема в том, что когда я обновляю пользователя, чтобы что-то изменить кроме их изображения, оно удаляется, мне нужно перезагружать изображение каждый раз, когда пользователь обновляется, чтобы изображение не удалялось при сохранении изменений.
Я пытаюсь сделать то, что когда пользователь обновлен, он дает мне изображение выше, как на следующем изображении:
This is what I get by updating the user:
введите описание изображения здесь
Модель:
class AbstractUser(AbstractBaseUser, PermissionsMixin):
username_validator = UnicodeUsernameValidator()
username = models.CharField(
_('username'),
max_length=150,
unique=True,
help_text=_('Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.'),
validators=[username_validator],
error_messages={
'unique': _("A user with that username already exists."),
},
)
userfile = models.FileField(upload_to='userphoto', null=True, default='null', help_text="User Photo")
first_name = models.CharField(_('first name'), max_length=30, blank=True)
last_name = models.CharField(_('last name'), max_length=150, blank=True)
email = models.EmailField(_('email address'), blank=True)
def __str__(self):
return str(self.userfile)
Вид:
def UserUpdateView(request, userid):
if request.method == 'POST':
form = UserEdit(request.POST, request.FILES or None)
if form.is_valid():
actualuserid = User.objects.get(pk=form.cleaned_data.get('user_id'))
actualuserid.userfile = form.cleaned_data.get('userfile')
print(actualuserid.userfile)
actualuserid.first_name = form.cleaned_data.get('first_name')
actualuserid.last_name = form.cleaned_data.get('last_name')
actualuserid.email = form.cleaned_data.get('email')
actualuserid.save()
else:
return render_to_response('andon/user_form.html', {'form': form})
return HttpResponseRedirect('/user/')
else:
andonuser = User.objects.select_related().filter(id__exact=userid, groups__name__contains='andon').values(
'id',
'username',
'userfile',
'first_name',
'last_name',
'email',
)
form = UserEdit(initial={
'user_id': andonuser[0]['id'],
'username': andonuser[0]['username'],
'userfile': andonuser[0]['userfile'],
'first_name': andonuser[0]['first_name'],
'last_name': andonuser[0]['last_name'],
'email': andonuser[0]['email'],
})
return render(request, 'andon/user_form.html', {'form': form})
Форма:
class UserEdit(forms.Form):
user_id = forms.IntegerField(required=True, widget=forms.TextInput(attrs={'readonly': 'readonly'}))
username = forms.CharField(required=True, widget=forms.TextInput(attrs={'readonly': 'readonly'}))
userfile = forms.Field(required=True, help_text='User Photo', widget=forms.FileInput())
first_name = forms.CharField(max_length=100, required=True)
last_name = forms.CharField(max_length=100, required=False)
email = forms.EmailField(required=False)