【发布时间】:2016-09-23 21:43:35
【问题描述】:
假设我有两个模型。帐户和问题。
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())
但我也需要将 Account 的用户名包含在 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)
为什么我必须做这样的事情?这背后的原因是什么?
【问题讨论】:
标签: python sqlalchemy turbogears2