Состояние гонки при использовании django GET

Я написал функцию в Django, которая выглядит примерно так:

@login_required
def make_appointment(request):
    existing_appointments = Appointment.objects.all()
    print('existing_appointments = ', len(existing_appointments))
    new_appointment = Appointment()
    new_appointment.save()
    # ...

И я вызываю это из javascript, используя следующий код:

for(i=0; i<2; i++){
    const xhr = new XMLHttpRequest();
    xhr.open('GET', "make_appointment/")
    xhr.send();
}

Я бы ожидал, что сначала вызывается команда GET, которая, в свою очередь, заставляет Django выполнить функцию make_appointment. Я ожидал бы увидеть следующий журнал:

[18/Dec/2024 17:42:48] "GET /make_appointment/ HTTP/1.1" 302 0
existing_appointments =  0
[18/Dec/2024 17:42:48] "GET /make_appointment/ HTTP/1.1" 302 0
existing_appointments =  1

Но журнал, который я обычно получаю, выглядит так:

existing_appointments =  0
existing_appointments =  0
[18/Dec/2024 17:42:48] "GET /make_appointment/ HTTP/1.1" 302 0
[18/Dec/2024 17:42:48] "GET /make_appointment/ HTTP/1.1" 302 0

Но я также уже получил

existing_appointments =  0
existing_appointments =  1
[18/Dec/2024 17:42:48] "GET /make_appointment/ HTTP/1.1" 302 0
[18/Dec/2024 17:42:48] "GET /make_appointment/ HTTP/1.1" 302 0

Для меня это проблематично, поскольку время второй встречи зависит от наличия первой, поэтому их следует создавать впоследствии.

Как я могу исправить этот код?

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