1

コードのフォーカスを変更したため、回答は不要になりました。(回答の私のコメントを参照してください)将来の参照のために回答を投稿してください...

子のフィールドで順序付けられた1対多のバックリファレンスから結果を取得するにはどうすればよいですか?インデックス順に並べられたgidにはすべてのものが必要です。ただし、現時点では、ms sqlサーバーで順序付けられている場合でも、ランダムに取得されます。

TurboGearsに2つのdatamodels.pyがあります。

`class Parcel(DeclarativeBase):
    __tablename__ = 'GENERAL'
    __table_args__ =  ({'autoload': True})   

    gid = Column(Integer, primary_key=True)`
    somethings = relationship('Something', backref='Parcel')

 'class Something(DeclarativeBase):
    __tablename__ = 'SKETCH'
    __table_args__ =  ({'autoload': True})

    gid = Column(Integer, ForeignKey('GENERAL.gid'), primary_key=True)
    index = Column(Integer, primary_key=True)

Turbogearsのroot.py:

query = DBSession.query(Parcel)
query = query.options(joinedload('somethings')
query=session.filter(Parcel.gid==gid)

gidunorderedのすべてのものを返します。

4

1 に答える 1

1

DBSession.query(Something).filter_by(gid=gid).order_by(Something.index).all()

edit: リレーションシップを使用するときに、インスタンスを並べ替えるためrelationship() のキーワード引数を受け入れます。order_by逆方向の順序を指定する場合は、 backref キーワードの代わりにbackref()functionorder_byを使用し、 と同じキーワード引数を使用できますrelationship()

于 2012-10-18T20:31:15.833 に答える