Применение обратных отношений с внешним ключом к двум разным моделям Django приводит к некорректному результату

Class Job(Base):
  .
  .
  joining_status = models.BooleanField(default=False)
  drive = models.ForeignKey(Drive, null=True, blank=True)

Class Internship(Base):
  .
  .
  joining_status = models.BooleanField(default=False)
  drive = models.ForeignKey(Drive, null=True, blank=True)

Class Drive(xyz):
  .
  .
  .

Я пытаюсь аннотировать количество рабочих мест и стажировок (сумма), имеющих статус присоединения true для определенного идентификатора диска.

Drive.objects.filter(id=716).annotate(\
    ...: x= Count(Case(\
    ...: When(Q(internship__joining_status=True), then=1), output_field = IntegerField()))).values('x')

output {'x':0}
Drive.objects.filter(id=716).annotate(\
    ...: x= Count(Case(\
    ...: When(Q(job__joining_status=True), then=1), output_field = IntegerField()))).values('x')

output {'x':1}

Но когда я объединяю оба варианта вместе, это приводит к нежелательному результату.

Drive.objects.filter(id=716).annotate(\
    ...: x= Count(Case(\
    ...: When(Q(job__joining_status=True) | Q(internship__joining_status=True), then=1), output_field = IntegerField()))).values('x')

output: {"x":2} // undesired output

должно быть {'x':1}. Я также пробовал использовать несколько условий when, но результат снова был нежелательным. Я немного новичок в django, нужна помощь в написании этого запроса.

Вернуться на верх