假设我们有一个模型:
class Critters(models.Model):
name = models.CharField()
parent = models.ForeignKey(Critters, blank=True, null=True, on_delete=models.CASCADE)
一开始是一些动物:
id Name Parent
== ======== ========
0 Critter1
1 Critter2
2 Critter3
然后,一些小动物生出了一个子元素:
id Name Parent
== ======== ======
0 Critter1
1 Critter2
2 Critter3
3 Child1 0
4 Child2 1
我想请求 Select all parents without childrens(即没有有父母的生物,也没有有已有子女的父母):
id Name Parent
== ======== ======
2 Critter3
我认为用Django的annotate
和exact
指令就可以做到,但我不知道我到底能做什么……
UPDATE1
当然,仅以字段Name
中的critter
和child
为例,我们不能按Name
筛选表.