Django: Как получить и сохранить поле внешнего ключа в методе POST

Я пытаюсь сохранить данные в двух моделях Booking и Event. Первая работает хорошо, но я получаю ошибку в модели Event, я не знаю, как получить и сохранить данные внешнего ключа. Вот моя модель Event:

class Event(models.Model):
    def __str__(self):
        return self.title
    title = models.CharField(max_length=200)
    description = models.TextField(blank=True)
    start_time = models.DateTimeField()
    end_time = models.DateTimeField(blank=True, null=True)
    place = models.CharField(max_length=200,blank=True)
    patient = models.ForeignKey(Patient, on_delete=models.CASCADE, blank=True,null=True)
    doctor = models.ForeignKey(User, on_delete=models.CASCADE, blank=True,null=True)

Вот мои взгляды:

def registerBooking(request):
    if request.method == 'POST':
        form = BookingForm(request.POST)
        place = request.POST.get('place','')
        visit_type = request.POST.get('visit_type','')
        description = request.POST.get('description','')
        patient = request.POST.get('patient','')
        doctor = request.POST.get('doctor','')
        created_at = request.POST.get('created_at','')
    

        if form.is_valid():
            new_booking = form.save()
            new_event = Event(title=visit_type,description=description,start_time=created_at,place=place,patient=patient,doctor=doctor)
            new_event.save()
            return JsonResponse({"msg":"Booking and Event successfully saved."})
            #return redirect(reverse('dashboard'))
        else:
            return JsonResponse({"msg":"Invalid data"})
    else:
        form = BookingForm()
    return render(request, 'patient/register_booking.html', {'form':form})

new_booking работает, но проблема в new_event, я получаю эту ошибку: "ValueError: Cannot assign "'1'": "Event.patient" должен быть экземпляром "Patient"."

Вы можете получить экземпляр Patient с помощью patient = Patient.objects.filter(pk = request.POST.get('patient','')).first() и затем использовать его при создании Event

Если нет Patient с pk, который вы получили в request.POST, вы получите None в patient, и после создания Event, patient поле в нем будет None также

То же самое для Doctor экземпляра

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