Django получает объекты, на которые не ссылается внешний ключ - PullRequest
16 голосов
/ 21 января 2011

У меня есть две модели, подобные этой:

class AA(models.Model):
    name = models.CharField()
    state = models.IngerField()


class BB(models.Model):
    aa_id = models.ForeignKey(AA)

Мой вопрос: как я получаю все объекты AA с состоянием 10 и которые не в BB?

В sql я делаю что-токак это:

select * from AA 
where  AA.state = 10 and AA.id not in (select aa_id from BB)

или

select * from AA
left join BB on BB.aa_id = AA.id
where AA.state = 10 and BB.id is null

Я знаю, что могу получить все объекты АА и проверить один за другим, если у BB есть внешний ключ к нему.Но это не то, что нужно делать.

Спасибо.

1 Ответ

25 голосов
/ 21 января 2011

Примерно так:

AA.objects.filter(state=10, bb=None)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...