You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask路由配置正确,但Items Used表格数据无法显示的问题

问题排查与解决:Items Used表格无数据显示

针对账单页面Items Used表格无法显示数据的问题,可按以下步骤逐一排查修复:

1. 确认后端查询是否返回数据

先查看后端控制台的Items Used: [xxx]打印输出:

  • 如果输出为空列表[]:问题出在数据库查询逻辑或数据本身
  • 如果输出有数据:问题出在前端模板的日期过滤逻辑

2. 修复日期格式/类型不匹配问题

SQLite的DATE类型存储为YYYY-MM-DD字符串,但后端查询返回的可能是datetime.date对象,与模板中字符串格式的current_date直接比较会失效。

解决方案A:在SQL查询中直接过滤当日数据

修改后端items_used的查询语句,在数据库层面完成日期过滤,避免类型不匹配:

cursor.execute('''
    SELECT i.item_name, iu.quantity, iu.date_of_diagnosis, i.cost
    FROM items_used iu
    JOIN Items i ON iu.item_id = i.item_id
    WHERE iu.patient_id = ? AND DATE(iu.date_of_diagnosis) = DATE('now')
''', (patient_id,))

解决方案B:后端转换日期为字符串

将查询结果中的日期字段统一转为字符串格式:

items_used_raw = cursor.fetchall()
items_used = []
for item in items_used_raw:
    item_dict = dict(item)
    # 将date对象转为与current_date一致的字符串格式
    item_dict['date_of_diagnosis'] = item_dict['date_of_diagnosis'].strftime("%Y-%m-%d")
    items_used.append(item_dict)

3. 检查JOIN关联是否失效

如果items_used表中的item_id在Items表中无匹配记录,JOIN查询会过滤掉这些无效数据。可执行以下SQL验证:

SELECT iu.*, i.item_name FROM items_used iu 
LEFT JOIN Items i ON iu.item_id = i.item_id 
WHERE iu.patient_id = [你的patient_id];

若结果中item_name为NULL,说明Items表缺少对应item_id的记录,需补充数据或修复外键关联。

4. 调试模板过滤逻辑

临时移除模板中的日期判断条件,验证数据是否能显示:

{% for item in items_used %}
    <!-- 去掉日期判断,直接显示所有数据 -->
    <tr>
        <td>{{ item['item_name'] }}</td>
        <td>{{ item['quantity'] }}</td>
    </tr>
{% endfor %}

如果数据显示,说明日期比较逻辑有问题,可添加调试输出查看格式差异:

{% for item in items_used %}
    <p>调试:{{ item['date_of_diagnosis'] }} | {{ current_date }}</p>
{% endfor %}

5. 验证数据库中是否存在有效数据

直接查询数据库,确认是否有符合条件的记录:

SELECT * FROM items_used 
WHERE patient_id = [你的patient_id] 
AND date_of_diagnosis = 'YYYY-MM-DD'; -- 替换为当前日期

若结果为空,说明数据库中没有当日的物品使用记录,需补充数据。

内容的提问来源于stack exchange,提问作者PLAWD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 03:57:32