4 个回答

返回的是包装后的对象

你的User和Role是两个不同的class啊,所以返回不同的
如果是输出的话,query.all()调用的是__repr__这个方法,你检查下User是否定义了__repr__这个方法,可以看下你的Role是怎么定义这个方法的

返回类型为python里的List,List里存储的内容为User和Role对象。
故返回类型相同,返回内容不同。

以我的项目为例——基于 flask 的 CRUD 操作

其中 models.py 里的定义如下(源码地址:https://github.com/eastossifrage/flask-wtf-crud/blob/basic/app/models.py

class User(db.Model):
    '''Example for crud
    以用户为例,来展示 CRUD 操作!
    '''
    __tablename__ = 'crud'
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64), unique=True, index=True)
    email = db.Column(db.String(64), unique=True, index=True)
    status = db.Column(db.Boolean, default=False)
    role = db.Column(db.Boolean, default=False)

    def __repr__(self):
        return '<User %r>' % self.username

根据你的例子,你的 UserRole 两个类中,前者没有定义 __repr__(self),而后者定义了 __repr__(self) 类,所以造成你的显示结果出现了不同的情况。

再者,建议看看资料,定义类的时候,注意一下 __repr__(self)__str__(self) 两个属性。

简单的说__repr__(self)是面向程序员的,而__str__(self)是面向用户的。

最后,送你个福利http://blog.csdn.net/luckytanggu/article/details/53649156

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进