Как получить URL-адрес файлового поля django? - PullRequest
1 голос
/ 05 августа 2020

У меня есть страница в django, которая позволяет загружать изображение пользователю, изображение правильно сохраняется в папке stati c и также отображается правильно, проблема в том, что когда я обновляю пользователя, чтобы что-то изменить кроме их изображения, оно удаляется, мне нужно перезагружать изображение каждый раз, когда пользователь обновляется, чтобы изображение не удалялось при сохранении изменений.

Я пытаюсь сделать то, что когда пользователь обновлен, он дает мне изображение выше, как на следующем изображении:

enter image description here

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...