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, но не могу понять, как использовать его в моем случае.