Форма django не сохраняется, несмотря на сообщение об успехе

На этой неделе я пытался научить себя чему-то новому, изучая различные учебники по API Google. Я упираюсь в стену на этапе сохранения формы, поэтому могу помочь вам.

В основном, я пытаюсь предложить пользователю возможность ввести первую строку адреса, чтобы Google затем предоставил предложения адресов.

Первый бит работает (когда я ввожу первую строку адреса, мне выдается список предложений).

Однако, когда я пытаюсь сохранить форму, она, похоже, нигде не сохраняется. И я также не получаю никакого сообщения об ошибке (если вообще получаю "сообщение об успехе", которое я должен получить, когда форма успешно отправлена).

Я подумал, что может быть есть поле, которое не заполняется в html. Поэтому я попробовал опустошить одно из них и попытался сохранить. Но в этом случае я получил сообщение об ошибке, говорящее, что поле отсутствует. Это наводит меня на мысль, что это не связано с полями в форме, а возможно с тем, как я сохраняю форму в файле views.py.

Должен признать, что здесь я нахожусь вне своей зоны комфорта (эта штука с ajax оказалась сложной для работы, и все, что мне нужно было сделать, это следовать учебнику...), так что я не удивлюсь, что я не захватил весь код, необходимый для того, чтобы вы могли помочь. Если это так, дайте мне знать, что вам нужно увидеть.

Views.py

def is_ajax(request):
    return request.META.get('HTTP_X_REQUESTED_WITH') == 'XMLHttpRequest'

def profile(request):
    result = "Error"
    message = "There was an error, please try again"
    form = profileform(instance = request.user) 
    Profile.objects.get_or_create(user=request.user)
    if is_ajax(request=request):
        form = profileform(data = request.POST, instance = request.user)
        if form.is_valid():
            obj = form.save()
            obj.has_profile = True
            obj.save()
            result = "Success"
            message = "Your profile has been updated"
        else:
            message = FormErrors(form)
        data = {'result': result, 'message': message}
        return JsonResponse(data)

    else:

        context = {'form': form}
        context['google_api_key'] = settings.GOOGLE_API_KEY
        context['base_country'] = settings.BASE_COUNTRY

    return render(request, 'main/profile.html', context)

Вместо

else:
    message = FormErrors(form)

Попробуйте это

else:
    message = form.errors

Интересно, что вы дошли до сообщения об успехе. Ваша проблема может заключаться в том, что вы передаете экземпляр пользователя форме, которая ожидает модель профиля (не уверен, почему это не приводит к ошибке):

# capture the profile that is created with get_or_create
profile, created = Profile.objects.get_or_create(user=request.user)

if is_ajax(request=request):
    form = profileform(data = request.POST, instance=profile) # change instance
Вернуться на верх