Django获取未被外键引用的对象

bal*_*oth 17 django

我有两个这样的模型:

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


class BB(models.Model):
    aa_id = models.ForeignKey(AA)
Run Code Online (Sandbox Code Playgroud)

我的问题是:我如何获得状态为10且不在BB中的所有对象AA?

在sql我做这样的事情:

select * from AA 
where  AA.state = 10 and AA.id not in (select aa_id from BB)
Run Code Online (Sandbox Code Playgroud)

要么

select * from AA
left join BB on BB.aa_id = AA.id
where AA.state = 10 and BB.id is null
Run Code Online (Sandbox Code Playgroud)

我知道如果BB有外键,我可以获得所有AA对象并逐个检查.但这不是正确的做法.

谢谢.

Dan*_*man 27

像这样的东西:

AA.objects.filter(state=10, bb=None)
Run Code Online (Sandbox Code Playgroud)

  • 是的,这是自动生成的反向关系字段.尝试一下,确实有效. (6认同)