Peewee return 所有未被外键引用的对象

Peewee return all objects not referenced by foreign key

我有坐标和天气事件的模型。 Coordinate 对象不引用天气事件,但每个 Weather 对象都有一个指向 Coordinate 的 ForeignKeyField。我想 return 所有未被天气模型中的外键引用的坐标对象。

我想对此只有一个查询,但以下是我最接近的查询,并说明了我正在努力实现的目标:

coords = Coordinate.select()
no_weather = Coordinate.select().join(Weather).where(~(Weather.coordinate << coords))

我希望我已经接近了,因为省略了“~” return 所有与 Weather 对象关联的 Coordinate 对象;我只想反过来。

有很多方法可以做到这一点。这是一个:

(Coordinate
 .select()
 .join(Weather, JOIN.LEFT_OUTER)
 .group_by(Coordinate)
 .having(fn.COUNT(Weather.id) == 0))

也许还有:

(Coordinate
 .select()
 .where(~fn.EXISTS(
     Weather
     .select()
     .where(Weather.coordinate == Coordinate.id))))