我相信我遵循的是这里的代码:http://web2py.com/books/default/chapter/29/06/the-database-abstraction-layer?search=insert#sum-avg-min-max-and-len
插件工作正常。max()行给出一个错误: 0x0000024D079AF748处的pydal.objects.Expression对象
我做错了什么?
模型:
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()发布于 2020-03-28 08:11:00
你不会得到一个错误。相反,您将返回两个PyDAL Expression对象( DAL Field对象的.max()方法返回一个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}}https://stackoverflow.com/questions/60886061
复制相似问题