Является ли запрос обратных внешних ключей ленивым?
Мне нужно проверить, есть ли у пользователя хотя бы один связанный продукт из множества типов, которые у нас есть в системе. Я пытаюсь сделать это более эффективным, поэтому я добавил any() и сделал генератор для проверки связи. Но мне интересно, будет ли он по-прежнему запрашивать все обратные связи и оценивать их? У пользователя может быть много продуктов каждого типа.
Мой код:
def has_connected_product(self):
def check_product_set_on_connected(product_sets):
for product_set in product_sets:
if product_set.model.__name__ == 'ShopifyProduct':
yield product_set.exclude(shopify_id__isnull=True).exclude(shopify_id=0).exists()
else:
yield product_set.exclude(source_id__isnull=True).exclude(source_id=0).exists()
return any(check_product_set_on_connected([
self.user.shopifyproduct_set,
self.user.commercehqproduct_set,
self.user.wooproduct_set,
self.user.ebayproduct_set,
self.user.fbproduct_set,
self.user.googleproduct_set,
self.user.gearbubbleproduct_set,
self.user.groovekartproduct_set,
self.user.bigcommerceproduct_set,
]))