【问题标题】:filter user records based on their names根据用户名过滤用户记录
【发布时间】:2021-03-24 19:57:12
【问题描述】:

我只是有一个 django 医疗网站,用户有他们的医疗记录,并且可以在登录时查看。 我已经实现了基于登录用户的过滤,我想要的是另一个用户(医生)根据用户(他选择的病人)查看这些记录。目前医生可以查看记录是否为一个(使用get_object_or_404,但我想循环遍历许多记录。

models.py

class Medrecs(models.Model):
    user = models.ForeignKey(User, null=True, on_delete=models.CASCADE, related_name="meds")
    title = models.CharField(max_length=60, null=True)
    doctor = models.ForeignKey('Doctors.Doctor', null=True, on_delete=models.PROTECT)
    patient = models.ForeignKey(Patient, on_delete=models.CASCADE)
    date = models.DateTimeField(auto_now=True, null=True)
    meds = models.TextField()

    def __str__(self):
        return self.title

Views.py

def detail(request, pat_id):
    patient = get_object_or_404(Patient, pk=pat_id)
    medrecs = Medrecs.objects.all().filter(user=request.user)
    return render(request, 'MyDoc/detail_pat.html', {'patient': patient}, {'medrecs': medrecs})

在上面的视图中,我可以看到是单个记录的患者记录,但是医疗记录(医疗记录无法根据用户(患者)过滤它们,它只是给了我带有代码的页面(模板页面unexecuted ).medrecs.objects.filter(user=request.user) 同样的情况下,.get 会带返回的行数和错误multipleobjects。

作为旁注,我能够使用视图过滤用户(个人资料页面)中的这些记录:

def my_profile(request):
if request.user.is_authenticated:
    meds = Medrecs.objects.all().filter(user=request.user)
    return render(request, 'MyDoc/my_profile.html', {'meds': meds})
else:
    return redirect('MyDoc:login_patient')

请寻求帮助。谢谢

【问题讨论】:

    标签: python django


    【解决方案1】:

    如果我理解正确,问题可能是您使用了错误的字段进行过滤。为什么将用户作为外键?如果您要将 Medrecs 保存给医生和患者,也许您应该这样过滤。

    #you are filtering the medrecs by the user field
    medrecs = Medrecs.objects.all().filter(user=request.user) 
    
    
    #Instead try this (if the doctor is logged in)
    doctor = """your_get_doctor_method"""
    medrecs = Medrecs.objects.all().filter(doctor=doctor,patient__id=pat_id)
    

    【讨论】:

      猜你喜欢
      • 2018-04-13
      • 2018-01-27
      • 2019-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多