В Django у меня проблемы с получением id из HTML; ошибка: ( Поле "id" ожидало число, но получило )

Когда пользователь выбирает имя переводчика, я хочу получить доступ к выбранному переводчику в Django по id и сохранить информацию в таблице назначений в базе данных, но возникает ошибка, когда он пытается обработать id, ошибка следующая: Field 'id' expected a number but got ''.

HtML-код:

 <section style="margin-top: 10%;">       
    <form method="POST" action="/waite" >
        {% csrf_token %} 
        <select id="translator" name="translator">
        {% for i in pro %}
             <option value="{{ i.id }}"> {{ i.name }}</option>
        {% endfor %}
      </select>
      <button type="submit">Send request</button>  

    </form>
</section>

в django view.py:

def waitePage(request):
        if request.method == 'POST':
            id = request.POST.get("translator")
            translator = Manager.objects.get(user_id=id)
            translatorName= translator.name #get the name of the translator
            translatorID= translator.id #get the id of the translator
        

            current_user  = request.user #to get the user
            current_userId = current_user.id #for storing user id
            customer = Customer.objects.get(id=current_userId) #to get the info of translator
            customerID=customer.id
            customerName=customer.name

            appointment = Appointment.objects.create(
            customerName=customerName,
            customerID=customerID, translatorID=translatorID, accepted=False,)
            appointment.save()
            return render(request,'waitePage.html')

Ошибка происходит из:

   translator = Manager.objects.get(user_id=id) 

Есть ли у вас идеи, как я могу решить эту проблему?

Есть ли у вас идеи, как я могу решить эту проблему?

Вместо этого:

<form method="POST" action="/waite" >

попробуйте вот это:

<form method="POST" action="{% url 'waitePage' %}">

Django использует шаблонизацию Jinja, это может быть причиной того, что вы не получаете id.

Вернуться на верх