Как сделать LEFT JOIN в django, я не могу понять это
Моя первая модель:
class HdAlerts(models.Model):
raised_at = models.DateTimeField(null=False)
msg = models.TextField()
site = models.ForeignKey(
Sites,
on_delete=models.CASCADE,
)
alert_class = models.CharField(max_length=120)
priority = models.IntegerField(null=True)
severity = models.SmallIntegerField(null=True)
partner = models.ForeignKey(
Partners,
on_delete=models.CASCADE,
)
alert_id = models.TextField(primary_key=True)
updated_at = models.DateTimeField(null=True)
resolved_at = models.DateTimeField(null=True)
ignore_until = models.DateTimeField(null=True)
class Meta:
managed = False
db_table = 'hd_alerts'
def __str__(self):
return f'<ID: {self.alert_id}: [Msg: {self.msg[:10]}]>'
Секунда:
class Partners(models.Model):
partner_id = models.IntegerField(primary_key=True)
partner_name = models.CharField(max_length=500, null=False)
is_profiles_shared = models.BooleanField(null=False)
is_deleted = models.BooleanField(null=True)
class Meta:
managed = False
db_table = 'partners'
def __str__(self):
return f'<Partner_ID: {self.partner_id}: [Name: {self.partner_name}]>'
И последнее:
class Sites(models.Model):
site_id = models.IntegerField(primary_key=True)
site_name = models.CharField(max_length=500, blank=True)
is_deleted = models.BooleanField()
is_auto = models.BooleanField()
partner_id = models.IntegerField(blank=True, null=True)
source_id = models.IntegerField(blank=True, null=True)
category_id = models.SmallIntegerField(blank=True, null=True)
class Meta:
managed = False
db_table = 'sites'
verbose_name = 'Site'
verbose_name_plural = 'Sites'
def __str__(self):
return f'Site id: {self.site_id}, Site name: {self.site_name}'
Мне нужно сделать следующий запрос:
SELECT
p.partner_name DBA,
s.site_name Site,
ha.msg Messege,
ha.ignore_until Ignored
FROM
hd_alerts ha
LEFT JOIN partners p ON
ha.partner_id = p.partner_id
LEFT JOIN sites s ON
s.site_id = ha.site_id
WHERE ha.resolved_at IS NULL
Я не понимаю, как это можно сделать в django. Я пытался передать его в raw(), но он запрашивает primary_key (который я указал, но видимо что-то пошло не так). Может кто-нибудь подсказать правильное решение, пожалуйста?