У меня есть отношения один-на-один, например:
class Adult(models.Model):
name = models.CharField(max_length=200)
class Child(models.Model):
name = models.CharField(max_length=200)
adult = models.ForeignKey(Adult)
И я пытаюсь найти способ получить QuerySet для взрослых, у которых есть хотя бы один ребенок, и затем применить фильтры кэтот QuerySet.В SQL, чтобы получить список идентификаторов для взрослых, у которых есть хотя бы один ребенок, я могу просто сделать это:
select distinct(child.adult_id) from child;
Но, пытаясь сделать то же самое в django, у меня возникают проблемы.Я пробовал такие вещи, как следующие, с некоторыми изменениями:
adult_ids = Child.objects.values_list('adult__id').distinct()
adults_with_children = Adult.objects.filter( id__in=adults )
, но я продолжаю генерировать SQL-запрос, который включает в себя соединение со взрослой таблицей в первой строке.Как я могу найти взрослых, у которых есть хотя бы один ребенок, быстрее / лучше?Заранее спасибо.