Как найти элементы внутри наборов запросов
Если у меня есть две модели:
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())