【发布时间】:2023-04-10 23:30:01
【问题描述】:
我的模特:
class ClinicPermissions(models.Model):
id = models.AutoField(primary_key=True, unique=True)
clinicid = models.ForeignKey(Clinic, on_delete=models.CASCADE)
doctorid = models.ForeignKey(doctor, on_delete=models.CASCADE)
viewperm_choices = (
(0, 'Cannot view clinic details'),
(1, 'Can view clinic details')
)
viewperms = models.IntegerField(
choices=viewperm_choices, default=0)
editperms_choices = (
(0, 'Cannot edit clinic details'),
(1, 'Can edit clinic details')
)
editperms = models.IntegerField(
choices=editperms_choices, default=0)
editdocs_choices = (
(0, 'Cannot edit doctor details'),
(1, 'Can edit doctor details')
)
editdocs = models.IntegerField(
choices=editdocs_choices, default=0)
class Meta:
unique_together = ["clinicid", "doctorid"]
上述模型描述了诊所中每位医生的权限。我需要获取与 Clinic 对象关联的医生对象列表,该对象存储在 ClinicPermissions 模型中,作为查询集并将其传递给表单。
即
我想找一个特定的诊所。
cl = Clinic.objects.get(id=10)
然后,我想从 ClinicPermissions 中获取医生的查询集,其中 Clinicid = cl:
即比以下更优雅的东西:
perms = ClinicPermissions.objects.filter(clinicid = cl)
docs = []
for perm in perms:
docs.append(perm.doctorid)
return docs
这里,docs 是一个列表,但我需要一个查询集,以传递给表单。
【问题讨论】:
-
perms = ClinicPermissions.objects.filter(clinicid = cl).values('doctorid') ?