如果精确值匹配,Django 如何自动呈现患者姓名?

Django how to automatically render name of patient if exact value matched?

我有一份预约表格。看图片

如果任何患者填写手机号码并且他已经存在于我的数据库中,那么我想在我的患者姓名字段中自动呈现他的名字。假设我有一个名叫 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 检测用户何时输入和离开手机号码输入。
  2. 在 JS 中使用 Ajax 请求将其发送到服务器(Django 中的 views.py)
  3. 视图函数然后尝试根据手机号码找到患者,然后 returns 返回 JsonResponse 患者信息
  4. JS 接收到它,并通过它的 id 定位患者姓名输入,将输入值更改为患者姓名。

方法二:小数据
如果你没有太多的病人记录,这个方法完全避免了Ajax。

  1. 在呈现页面时发送包含所有患者姓名和匹配手机号码的字典。
  2. 使用 JavaScript(JS) onchange 检测用户何时输入和离开手机号码输入。
  3. 使用JS抓取号码,匹配手机号,通过id输入Patient Name,将输入值改为病人姓名。

底线
Django 是 server-side,你要求的必须在客户端完成,意思是 JavaScript。