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))))
我有坐标和天气事件的模型。 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))))