Как сделать левое объединение в кверисете django
У меня есть две модели, и мне нужно выполнить операцию объединения слева. Я попробовал несколько решений, но пока безуспешно
Модели
class SmdRepairIn(models.Model):
sum_ymd = models.DateField(blank=True, null=True)
line_nm = models.CharField(max_length=20, blank=True, null=True)
model_code = models.CharField(max_length=20, blank=True, null=True)
class SmdRepairOut(models.Model):
repair_in_id = models.CharField(max_length=20, blank=True, null=True)
repairman_out = models.CharField(max_length=30, blank=True, null=True)
SMDRepairIn.id == SmdRepairOut.repair_in_id
Я хочу получить результат соответствующего запроса:
select A.*, B.repairman_out
from SmdRepairIn as A
left join (select repairman_out from SmdRepairOut) B on (A.id = B.repair_in_id )
Как сделать это в django queryset?
Ожидаемый результат должен быть:
id, sum_ymd, line_nm, model_code, repairmain_out
Вы должны использовать Foreignkey
уже в модели:
class SmdRepairIn(models.Model):
sum_ymd = models.DateField(blank=True, null=True)
line_nm = models.CharField(max_length=20, blank=True, null=True)
model_code = models.CharField(max_length=20, blank=True, null=True)
class SmdRepairOut(models.Model):
repair_in = models.ForeignKey(SmdRepairIn, blank=True, null=True, on_delete=models.SET_NULL)
repairman_out = models.CharField(max_length=30, blank=True, null=True)
Это позволит вам запросить нужные вам выборки. Примеры см. здесь: https://docs.djangoproject.com/en/3.2/topics/db/examples/many_to_one/