我试图用现有的Django特性/命令实现OUTER JOIN
功能
我有这个模型:
class ClinicDoctor(models.Model):
doctor = models.ForeignKey('User', related_name='doctorsF') # single quotes (') because User table is defined down the code.
clinic = models.ForeignKey(Clinic, related_name='clinicsF')
以及
class User(AbstractUser):
clinics = models.ManyToManyField(Clinic, through='ClinicDoctor', related_name='doctors')
我需要所有医生的名单以及他们的相关诊所。如果他们有相关的诊所,我就能拿到名单。但我没办法找到那些没有诊所的医生
我试过这个:
doctorsQuerySet = ClinicDoctor.objects.filter(doctor__groups__name='Doctor').distinct()
它不像INNER JOIN
那样工作
这个问题将给我所有的医生。但我不知道该由谁去请所有的医生
doctorsQuerySet = User.objects.filter(groups__name='Doctor').order_by('full_name')
如果有医生的话,我得带他们去看诊所。它的功能似乎类似于OUTER JOIN
。我们在Django怎么做
谢谢你
如果将医生定义为分配给“医生”组的用户,则第一个查询是正确的:
通过使用一个循环,你现在可以越过每个用户,读取与诊所相关的数据
由于这将在每次迭代中导致额外的查询,因此您应该考虑在查询中使用预回迁:
希望这有帮助:)
相关问题 更多 >
编程相关推荐