根据用户记录的名称筛选用户记录

2024-05-19 00:06:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我只是有一个django医疗网站,用户在那里有他们的医疗记录,登录时可以查看。 我已经实现了基于登录用户的过滤,我想要的是另一个用户(医生)根据用户(他选择的患者)查看此记录。目前,医生可以查看记录是否为一个(使用get_object_或_404),但我希望循环多个记录

模特们

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})

在上面的视图中,我可以看到单个记录的患者记录,但是medrecs(医疗记录无法根据用户(患者)对其进行筛选),它只给了我一个带有代码的页面(模板页面未执行)。medrecs.objects.filter(用户=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')

请寻求帮助。谢谢


Tags: 用户患者truegetreturnmodelsrequest记录
1条回答
网友
1楼 · 发布于 2024-05-19 00:06:58

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

#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)

相关问题 更多 >

    热门问题