Flask-SQLAlchemy查询MySQL计算日期差报BaseQuery无date属性如何解决
错误原因
你代码里的d1、d2变量是SQLAlchemy的BaseQuery查询对象,没有执行查询获取实际的日期数据,因此不存在date()方法,直接调用就会抛出属性不存在的错误。另外你现有代码的查询逻辑也存在问题:query.get()方法是按主键值检索单条记录,不能传字段名作为参数;模板里对单个数字值做循环遍历也会触发后续错误。
修复后的后端代码
@app.route('/',methods=['GET','POST']) def show(): # 示例按主键id=1获取指定的任务记录,你可以根据自己的筛选逻辑调整查询条件 task = MyTask.query.get(1) # 如果要查询全部任务的日期差,替换为下方逻辑 # tasks = MyTask.query.all() # dura_list = [(task.dates_finish - task.dates_start).days for task in tasks] # return render_template('index.html', dura=dura_list) # 单条记录计算天数差 dura = task.dates_finish - task.dates_start return render_template('index.html', dura=dura.days)
修复后的模板代码
如果是单条记录的天数差,直接输出即可,不需要循环:
{{ dura }} <br>
如果是多条记录的天数差列表,保留循环逻辑即可:
{% for output in dura %} {{ output }} {% endfor %} <br>
内容的提问来源于stack exchange,提问作者Albert
相关产品推荐
相关产品推荐

