执行 table.field.max() 时出现 Web2py 错误 "pydal.objects.Expression object"
Web2py error "pydal.objects.Expression object" when doing table.field.max()
插入工作正常。
max() 行给出错误:pydal.objects.Expression object at 0x0000024D079AF748
我做错了什么?
型号:
db = DAL('sqlite://storage.sqlite')
db.define_table(
'CardMasters',
Field('Name'),
Field('Categories'),
Field('Description'),
singular="Card Master", plural="Card Masters",
format = '%(Name)s (%(Description)s)')
控制器:
def test():
id = db.CardMasters.insert(Name='please work')
maxName = db.CardMasters.Name.max()
maxid = db.CardMasters.id.max()
return locals()
您没有收到错误。相反,您要返回两个 PyDAL Expression
对象(DAL Field
对象的 .max()
方法 returns 和 Expression
对象)。如果您随后尝试在视图中包含这些对象,它们将被转换为字符串,并且当您将任意 Python 对象转换为字符串时,您将获得该对象的默认字符串表示形式,例如 <pydal.objects.Expression object at 0x0000024D079AF748>
.
大概您的意思是查询数据库以查找最大名称(这将是按字母顺序排列的最后一个)和最大 id
。要获得这些值,您可以这样做:
maxName = db.CardMasters.Name.max()
maxid = db.CardMasters.id.max()
row = db(db.CardMasters).select(maxName, maxid).first()
return dict(id=id, maxName=row[maxName], maxid=row[maxid])
在视图中,您可以执行以下操作:
{{=maxName}}
{{=maxid}}
插入工作正常。 max() 行给出错误:pydal.objects.Expression object at 0x0000024D079AF748
我做错了什么?
型号:
db = DAL('sqlite://storage.sqlite')
db.define_table(
'CardMasters',
Field('Name'),
Field('Categories'),
Field('Description'),
singular="Card Master", plural="Card Masters",
format = '%(Name)s (%(Description)s)')
控制器:
def test():
id = db.CardMasters.insert(Name='please work')
maxName = db.CardMasters.Name.max()
maxid = db.CardMasters.id.max()
return locals()
您没有收到错误。相反,您要返回两个 PyDAL Expression
对象(DAL Field
对象的 .max()
方法 returns 和 Expression
对象)。如果您随后尝试在视图中包含这些对象,它们将被转换为字符串,并且当您将任意 Python 对象转换为字符串时,您将获得该对象的默认字符串表示形式,例如 <pydal.objects.Expression object at 0x0000024D079AF748>
.
大概您的意思是查询数据库以查找最大名称(这将是按字母顺序排列的最后一个)和最大 id
。要获得这些值,您可以这样做:
maxName = db.CardMasters.Name.max()
maxid = db.CardMasters.id.max()
row = db(db.CardMasters).select(maxName, maxid).first()
return dict(id=id, maxName=row[maxName], maxid=row[maxid])
在视图中,您可以执行以下操作:
{{=maxName}}
{{=maxid}}