带有ManyToMany的Django子查询

时间:2018-03-05 18:23:34

标签: django database orm

我有以下数据库架构:

class Psychologist:
    availabilities = models.ManyToManyField(Availability, blank=True)
    taken_availabilities = models.ManyToManyField(Availability, blank=True, related_name='taken_availabilities')

我想过滤至少一位心理学家所拥有的所有可用性,同样的心理学家在taken_availabilities中没有这些可用性。

例如,如果:

psy1 has: availabilities=1am; taken_availabilities= psy2 has availabilities=2am,3am; taken_availabilities=2am

这个查询应该会产生1am, 3am(因为唯一的心理学家已经凌晨2点,已经服用了)

我能想出这个:

Availability.objects.filter(psychologist__in=Psychologist.objects.filter(availabilities__id=F('id')).exclude(taken_availabilities__id=F('id')))

但它不起作用,它显示了心理学家所拥有的所有可用性,如果只有心理学家能够接受它,那就无所谓了。

对此有何帮助?

0 个答案:

没有答案