Django как автоматически вывести имя пациента при совпадении точного значения?
У меня есть формы для назначенной встречи. см. фото

Если какой-либо пациент вводит номер мобильного телефона и он уже существует в моей базе данных, то я хочу автоматически отобразить его имя в полях имени пациента. Предположим, у меня есть пациент по имени Jhone и его мобильный номер +123456. Если Jhone введет свой номер мобильного телефона, то я хочу, чтобы его имя автоматически отображалось в полях имени пациента. Как это сделать в djago? Вот мой код:
models.py
class Patient(models.Model):
patient_name = models.CharField(max_length=150)
patient_number = models.CharField(max_length=50, blank=True, null=True)
class Appointment(models.Model):
patient = models.ForeignKey(
Patient, on_delete=models.CASCADE, blank=True, null=True)
patient_name = models.CharField(max_length=100, blank=True, null=True)
patient_number = models.CharField(max_length=50, blank=True, null=True)
views.py:
if form.is_valid():
form.save()
messages.add_message(request, messages.INFO,f'Appoinment added sucessfully for
{form.instance.patient_name}')
return redirect('hospital:add-appointment')
else:
form = AppointmentForms()
Метод 1: Любой размер данных
- Используйте JavaScript (JS) onchange для определения момента, когда пользователь вводит и оставляет ввод номера мобильного телефона.
- Используйте Ajax запрос в JS для отправки этого на сервер (views.py в вашем Django) .
- Функция представления затем пытается найти пациента на основе номера мобильного телефона и возвращает JsonResponse обратно с информацией о пациенте .
- JS получает его и нацеливается на вход "Имя пациента" через его id, изменяя значение входа на имя пациента.
Метод 2: Небольшие данные
.
Если у вас не слишком много записей пациентов, этот метод позволяет полностью избежать Ajax.
- Отправляйте словарь ВСЕХ имен пациентов и соответствующих мобильных номеров, когда страница отображается.
- Использовать JavaScript (JS) onchange для обнаружения момента, когда пользователь вводит и оставляет ввод номера мобильного телефона.
- Используйте JS для захвата номера, сопоставления его с номером мобильного телефона и нацеливания на ввод имени пациента через его id, изменяя значение ввода на имя пациента.
Вывод
Django является серверным, и то, о чем вы спрашиваете, должно быть сделано на стороне клиента, то есть на JavaScript.