Django запрос JOIN ON LIKE

Я ищу способ построить запрос с отношением JOIN (не INNER JOIN) с пользовательским условием ON.

У меня есть 2 модели

class User(models.Model):
    email = models.EmailField(unique=True)
    name = models.CharField(max_length=100, null=True, blank=True)

class Company(models.Model):
    name = models.CharField(max_length=100, null=True, blank=True)
    is_intra = models.BooleanField(default=False)
    email_domain = models.CharField(max_length=100, null=True, blank=True, help_text='Email domain without @')

Я хочу найти всех пользователей, у которых адрес электронной почты совпадает с доменным именем компании. Компания должна иметь email_домен и is_intra должно быть True.

Мне удалось получить результат с помощью необработанного запроса :

raw = """SELECT DISTINCT 
        u.id, u.name, u.email
        FROM myapp_user AS u
        JOIN myapp_company AS c
            ON c.is_intra = True
            AND c.email_domain IS NOT NULL
            AND u.email LIKE CONCAT('%%', '@', c.email_domain)"""
query = User.objects.raw(raw)

Но есть ли способ построить запрос, используя django ORM? Я пробовал с FilteredRelation, но не могу понять, как использовать его в моем случае.

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