Django Объект ImageField не обновляется с полем ввода - PullRequest
0 голосов
/ 29 марта 2020

Я попытался обновить изображение профиля пользователя, используя представление функции (ajax), но постоянно получаю сообщение об ошибке ниже:

повышение MultiValueDictKeyError (ключ) django .utils.datastructures.MultiValueDictKeyError : 'emp_photo'

Та же самая техника, которую я использую, используется в CharField и TextField без проблем.

Пожалуйста, смотрите мои коды ниже.

views.py

@login_required(login_url='/login/')
@user_passes_test(user_type_combo)
def change_employee_photo(request, pk):
    data = dict()
    profile = get_object_or_404(Profile, pk=pk)
    if request.method == 'POST':
        form = EmployeePhotoForm(request.POST or None, request.FILES or None, instance=profile)
        if form.is_valid():
            newPic = profile(emp_photo=request.FILES['emp_photo'])
            newPic.save()
            data['is_valid'] = True
    else:
        form = EmployeePhotoForm(instance=profile)
        data['form_is_valid'] = False

    context = {
        'form': form,
    }
    data['html_form'] = render_to_string('employees/partial_employee_photo.html',
                                         context,
                                         request=request
                                         )
    return JsonResponse(data)

forms.py

image

Я определенно буду признателен за любую помощь чтобы решить эту проблему.

Ответы [ 2 ]

0 голосов
/ 29 марта 2020

Вы можете подумать об использовании request.FILES.getlist('emp_photo') и дополнительно проверить, существует ли ключ emp_photo, напечатав его в своем коде, если он содержит какое-то значение.

0 голосов
/ 29 марта 2020

я думаю, что вы забыли упомянуть следующие строки в вашем settings.py

MEDIA_ROOT = os.path.join(BASE_DIR, "media")
MEDIA_URL = "/media/"

...