Как найти элементы внутри наборов запросов

Если у меня есть две модели:

Model_1.objects.all()

Model_2.objects.all()

Модель_1 содержит все элементы, Модель_2 содержит часть этих элементов.

Как найти элементы, содержащиеся в Модели_1, но не содержащиеся в Модели_2?

Я пытался:

Model_1.objects.exclude(pk=Model_2.objects.order_by('pk'))

Не работает.

Вы можете использовать in[Django doc.] как:

Model_1.objects.exclude(pk__in=[obj.pk for obj in Model_2.objects.all()])

Обычно две модели представляют две разные сущности. Но если вы хотите отфильтровать Модель_1 на основе некоторого свойства Модели_2 Используйте exclude и filter в соответствии с вашими требованиями.

Model_1.objects.exclude(id__in=Model_2.objects.all()) Model_1.objects.filter(id__in=Model_2.objects.all())

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