2011-01-21 2 views
13

я две модели, как это:Джанго получить объекты не ссылается внешний ключ

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


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

Мой вопрос: Как я могу получить все объекты АА с состоянием 10, а не в ББ?

В 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 

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

Спасибо.

ответ

18

Что-то вроде этого:

AA.objects.filter(state=10, bb=None) 
+0

бб не является полем модели А. – balsagoth

+5

Да, это, это автоматически сгенерированные обратное поле отношения. Попробуйте, он работает. –

+0

да, это работает. Так легко. Спасибо – balsagoth

Смежные вопросы