Есть ли в django .extra () левое соединение, которое может помочь мне объединить таблицы без каких-либо связей в django - PullRequest
1 голос
/ 23 апреля 2020
class Ordman(models.Model):
    pcod = models.CharField(db_column="PCOD", max_length=6)

    class Meta:
        managed = False
        db_table = "ORDMAN"


class Shademst(models.Model):
    code = models.CharField(db_column="CODE", primary_key=True, max_length=6)

    class Meta:
        managed = False
        db_table = "SHADEMST"

Они оба связаны без каких-либо отношений, и мне нужно запустить запрос на левое соединение с помощью extra () в ORM в django, но соединение, которое я могу применить, является внутренним соединением, так что любой может помочь мне выяснить, как применить левое соединение в нем. База данных является устаревшей базой данных, поэтому не может вносить в нее изменения

1 Ответ

0 голосов
/ 23 апреля 2020

На основании комментария

PCOD в Ордмане может содержать или не содержать данные, но мне все еще нужно запустить запрос JOIN, я хочу выполнить LEFT JOIN, поэтому, если PCOD нет данных, но запросы на соединение запускаются и переносят данные. Мне нужно запустить select * from ORDMAN LEFT JOIN SHADEMST on Ordman.shcd = SHADEMST.code

Я бы предложил просто отредактировать определение поля pcod на Ordman, чтобы фактически было внешним ключом, что-то вроде

pcod = models.ForeignKey(Shademst, db_column="PCOD", to_field="code")

и Django должны быть достаточно умны, чтобы вывести соотношение 1: N и позволить вам выполнять соединения, как обычно.

...