我只想要来自医院的请求。我怎样才能做到这一点?
示例:
来自医院的用户
class CustomUser(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(_('email address'), unique=True)
FKbelongs_to = models.ForeignKey('HospitalViewRoleForUsers', on_delete = models.CASCADE, null=True, blank=True)
医院型号
class HospitalViewRoleForUsers(models.Model):
RequestsFromLab = models.ForeignKey('request', on_delete=models.PROTECT)
来自医院的请求
FKHospitalRequests = models.ForeignKey('HospitalViewRoleForUsers', on_delete = models.PROTECT)
user_request = models.ForeignKey('customuser', on_delete= models.PROTECT)
在我的视图中,我需要验证用户属于哪家医院,仅将该医院的请求信息传递给我的用户视图。
我试图构建的用户视图
def Get_UserRequestByHospital(request, pk):
user = request.user
items = requests.objects.filter(FKHospitalRequests = 1).values_list('id', flat = True)
return render(request, 'user_profile/list-user-request.html', {'items': items})
在Jupyter测试数据中,它看起来像这样的
user_hospital2 = requests.objects.filter(FKHospitalRequests = 1).values_list('id', flat = True)
<QuerySet [1]>
正如我们所看到的,Jupyter返回了与医院相关的请求id。但是,我很困惑,我需要帮助思考解决方案。我是Django的新手,所以。我想我需要将PK传递给视图,然后创建一个过滤器来检查PK是否等于Hospital Request中的FK?但是,我怎么知道这个用户属于医院?非常感谢。我真的很失落,我是Django的新手。
--编辑:来自同一家医院的用户可以查看其他用户的请求。
我通过这样做解决了问题:
在我的请求视图中,我添加了一个FK来检查是否等于用户FK。使用此方法,我只能让来自医院1的用户查看医院1的请求。
def Get_UserRequest(request, FKbelongs_to_id):
user = request.user
if CustomUser.objects.filter(FKbelongs_to_id = FKbelongs_to_id):
items = requests.objects.filter(FKHospitalRequests_id = FKbelongs_to_id)
else:
return HttpResponseNotAllowed("Not Allowed")