Является ли запрос обратных внешних ключей ленивым?

Мне нужно проверить, есть ли у пользователя хотя бы один связанный продукт из множества типов, которые у нас есть в системе. Я пытаюсь сделать это более эффективным, поэтому я добавил 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,
    ]))
Вернуться на верх