sewiteのバックエンドを使用して、PeeweeのBと1対多の関係を持つオブジェクトモデルAがあるとします。私はいくつかのAのセットを取り出して、それぞれのBを最近のものと結合したいと思っています。彼らはループなしでこれを行う方法ですか?Peeweeのオブジェクトセットの最新の関連オブジェクトを取得する
class A(Model):
some_field = CharField()
class B(Model):
a = ForeignKeyField(A)
date = DateTimeField(default=datetime.datetime.now)
意志よう
q = A.select().join(B).order_by(B.date.desc()).limit(1)
は当然、シングルトン結果を生成する、ORDER_BY呼び出し、リミット(1)、それはクエリ全体に適用されることであろうナイーブ方法私はどちらか間違っているか、それがこのために動作しませんプリフェッチを使用しています
q = B.select().order_by(B.date.desc()).limit(1).join(A)
、
q1 = A.select()
q2 = B.select().order_by(B.date.desc()).limit(1)
q3 = prefetch(q1,q2)
len(q3[0].a_set)
len(q3[0].a_set_prefetch)
理由
これらのセットのいずれも長さが1ではありません。誰もこれを行う方法を知っていますか?