SQLAlchemy:\'Model\'对象不可调用

问题描述

| 我正在将Flask框架与sqlalchemy结合使用,但无法查询结果的某些相关表。 用户>有很多>订单 所以我有订单,我想查询该订单所属的用户
order = Order.query.get( id )
return order.user()
当我调用它时,我得到\'User \'对象是不可调用的。这是定义我的关系的方式:
#   ----------------------------------------------------------------------------------
#   MODELS
#   ----------------------------------------------------------------------------------
class User( object ):
    __tablename__ = \'user\'

    query = db_session.query_property()

class Order( object ):
    __tablename__ = \'order\'

    query = db_session.query_property()

#   ----------------------------------------------------------------------------------
#   MODELS SCHEMA
#   ----------------------------------------------------------------------------------
users_table = Table( \'user\',Metadata,Column( \'id\',Integer,primary_key = True ),Column( \'username\',String( 50 ),unique = True ),Column( \'email\',Column( \'password\',String( 32 ),nullable = False ),...
    MysqL_engine = \'InnoDB\',MysqL_charset = \'utf8\'
 )

orders_table = Table( \'order\',Column( \'user_id\',ForeignKey( \'user.id\' ) ),Column( \'transaction_id\',MysqL_charset = \'utf8\'
 )

#   ----------------------------------------------------------------------------------
#   MAPPERS
#   ----------------------------------------------------------------------------------
mapper( User,users_table,properties = {
    #   has many
    \'orders\' : relationship( Order )
} )

mapper( Order,orders_table,properties = {
    #   belongs to
    \'user\': relationship( User )
} )
知道为什么会出现此错误吗?     

解决方法

        
order
是订单对象,您已将\“ user \”关系定义为属性。因此,属性\“ user \”将代表用户对象。这可能与您使用过的其他ORM不同,其中ѭ3实际上是一些需要调用以检索用户的函数,或者是可能返回用户的查询对象。 如果您希望看到此效果,请执行以下操作...
user = order.user
print type(user)
您会注意到
order.user
返回一个\“ User \”实例(或者在某些情况下可能返回ѭ6an或引发异常)。在这种情况下,调用
order.user()
将尝试“调用”
User
实例。 因此,该错误消息很有意义,因为您正试图调用
User
实例,并且尚未将
User
定义为可调用对象。