2011-01-21 26 views
13

ben var böyle iki model:yabancı anahtar

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


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

Sorum şu: i bütün devlet 10 ile AA nesneleri almak ve BB o değil nasıl? sql olarak

i böyle bir şey yapmak:

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

veya

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

Ben bütün AA nesneleri almak ve BB ona yabancı anahtar varsa teker teker kontrol edebileceğinizi biliyor

. Ama yapılacak en doğru şey değil.

Teşekkürler. Böyle

cevap

18

şey:

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

bb AA modelinin bir alan değildir – balsagoth

+5

Evet öyle, otomatik olarak oluşturulan ters ilişki alanım. Deneyin, işe yarıyor. –

+0

evet işe yarıyor. Çok kolay. Teşekkür ederim – balsagoth