我有以下数据库架构:
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')))
但它不起作用,它显示了心理学家所拥有的所有可用性,如果只有心理学家能够接受它,那就无所谓了。
对此有何帮助?