2つのモデルがあるとします。アカウントと質問。slqlachemyが変数宣言によって荷重に加算されました
class Account(DeclarativeBase):
__tablename__ = 'accounts'
id = Column(Integer, primary_key=True)
user_name = Column(Unicode(255), unique=True, nullable=False)
、私の質問のモデルは次のようになる:
class Question(DeclarativeBase):
__tablename__ = 'questions'
id = Column(Integer, primary_key=True)
content = Column(Unicode(2500), nullable=False)
account_id = Column(Integer, ForeignKey(
'accounts.id', onupdate='CASCADE', ondelete='CASCADE'), nullable=False)
account = relationship('Account', backref=backref('questions'))
私が提供質問IDからJSON形式で質問を返すメソッドを得ました。 このメソッドが以下のような場合は、id
content
とaccount_id
が返されます。
@expose('json')
def question(self, question_id):
return dict(questions=DBSession.query(Question).filter(Question.id == question_id).one())
アカウントのuser_nameもjsonレスポンスに含める必要があります。私には少なくとも(私にとっては)奇妙なことは、クエリ結果にアカウントとの関係が含まれていることを明示的に伝える必要があるということです。このようにしてアカウント情報がjsonレスポンスに含まれます:
@expose('json')
def question(self, question_id):
result = DBSession.query(Question).filter(Question.id == question_id).one()
weird_variable = result.account.user_name
return dict(question=result)
なぜこのようなことをしなければなりませんか?これの背後にある理由は何ですか?
非常に役に立ちます。ありがとうございます – Juggernaut