2017-03-18 17 views
1

私はpeewee ormを使用しています。逆の外部キー照会を行う方法を知りたいと思います。peeweeとの外部キー照会

これらは私のモデルです:

class Device(BaseModel): 
    mac = CharField() 
    ip = CharField() 

class Metrics(BaseModel): 
    device = ForeignKeyField(Device, related_name="metricas") 
    sensor = CharField() 
    analog = FloatField(null = True) 
    timestamp = DateTimeField() 

私は=「温度」フィールドセンサーとのメトリックを持っているすべてのデバイスを取得する最も簡単な方法を知っていただきたいと思います。

私はさまざまなクエリーといくつかの反復でそれを解決できますが、それを行うより直接的な方法があるのだろうかと思います。

おかげ

答えて

1

一つの方法:

Device.select().join(Metric).where(Metric.sensor == 'temperature') 

別の方法:

Device.select().where(fn.EXISTS(
    Metric.select().where((Metric.sensor == 'temperature') & (Metric.device == Device.id)) 
)) 
+0

感謝。最初のオプションは機能しません。タイムアウトエラーが出るまで「考えている」だけです。 2番目のオプションは完璧なので、もう一度お礼します。その答えは私に多くの問題を解決します! - –

関連する問題