If you’re simply looking to create a queryset of items that you choose through some complicated process not representable in SQL you could always use the __in operator.
wanted_items = set()
for item in model1.objects.all():
if check_want_item(item):
wanted_items.add(item.pk)
return model1.objects.filter(pk__in = wanted_items)
You’ll obviously have to adapt this to your situation but it should at least give you a starting point.