Как сделать LEFT OUTER JOIN на Django ORM на поле, отличном от ForeignKey - PullRequest
0 голосов
/ 01 августа 2020

У меня 2 модели:

model A:
  name = CharField()
  ...

model B:
  title = CharField(null=True)
  ...

Я хочу получить всю запись модели A , не имеющей записи в модели B по "имени" = "title"

ON SQL Я получил это от:

SELECT  "A".* 
    FROM "A"
    LEFT OUTER JOIN "B"
     ON "A"."name" = "B"."title"
WHERE "B"."title" IS NULL

Как написать это с помощью Django ORM?

1 Ответ

1 голос
/ 01 августа 2020

Вы можете использовать простой exclude с подзапросом всех заголовков из модели B следующим образом:

A.objects.exclude(name__in=B.objects.all().values('title))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...