Django:如何从一个部门过滤患者?

时间:2016-06-07 12:41:59

标签: python django django-models django-views

我正在使用django v1.8。

我扩展了现有的用户模型。

models.py

class Institution(models.Model):
    user =  models.OneToOneField(User, on_delete=models.CASCADE)
    department = models.CharField(max_length=100)

class Demographic(models.Model):
    patient_id = models.IntegerField(unique= True ,primary_key=True)
    pub_date = models.DateTimeField(auto_now=True)
    author = models.ForeignKey(User)
    history = HistoricalRecords()

    def __str__(self):
        return str(self.patient_id)

我有两个属于同一部门的doctornurse用户,我希望他们都可以访问相同的病人。

在模板中,我使用搜索引擎搜索病人。

views.py我有这个过滤器:

patient = Demographic.objects.filter(patient_id__icontains=id)

但是这两个用户只能在他们所在部门的患者之间进行搜索。

如何在过滤器中实现此目的?我应该包含哪些参数?

2 个答案:

答案 0 :(得分:1)

我认为author是一种与病人相关的看护人。然后,您可以在用户部门执行filter

department = Institution.objects.get(user=request.user).department
demographic = Demographic.objects.filter(patient_id=id).filter(author__institution__department=department)

答案 1 :(得分:1)

  

当用户将患者作为作者插入时,用户属于某个部门,然后该患者属于该部门。

首先让我们先获得给定department的{​​{1}}:

user

现在您希望所有患者(user = request.user # the doctor, the nurse etc department = Institution.objects.get(user=user).department 个实例)都在Demographic

author.institution.department = department