Django查询两张不同数据表仅第一张数据可显示,求解决方案
问题排查与解决方案
1. 先确认stmtacct是否有数据
首先要排除“根本没查到数据”的情况,在视图层添加调试代码验证:
acconty = Porjectasset.objects.filter(accountno=acct).values() stmtacct = Tbltrn.objects.filter(accountno=acct).values() # 打印调试信息,查看控制台输出 print(f"符合条件的Tbltrn记录数: {stmtacct.count()}") print(f"当前过滤的accountno值: {acct}") context={ 'acconty':acconty, 'stmtacct':stmtacct }
- 如果控制台输出
stmtacct.count()为0,说明过滤条件有问题:- 检查
Tbltrn数据表中是否存在accountno等于acct的记录; - 确认
acct的类型与Tbltrn.accountno字段类型是否一致:比如acct是字符串,但Tbltrn.accountno是整数类型,需要转换后再过滤,示例:# 假设acct是字符串,转成整数后过滤 stmtacct = Tbltrn.objects.filter(accountno=int(acct)).values()
- 检查
2. 修正模板的HTML结构错误
你的模板中stmtacct循环部分的标签嵌套混乱,可能导致浏览器渲染异常(看起来像是没显示),修正后的代码如下:
{% for xbc in acconty %} <div> Project Account No. </div> {% endfor %} {% for xc in stmtacct %} <div class="form-group"> <strong>Loan Account No :</strong> <h3> <span style="color:green"> <a href="loandash/{{xc.id}}" class="text-primary">{{xc.id}}</a> </span> </h3> </div> {% endfor %}
原代码的问题包括:
- 重复嵌套
<b>标签且闭合顺序错误; <h3>包裹<p>的不符合HTML规范;- 错误使用
</br>(正确写法是<br>或<br/>)。
3. 额外排查点
如果以上两步都没问题,检查:
- 模板是否继承了正确的基础模板,确保循环代码所在区域没有被其他元素覆盖;
- 查看页面源代码,确认
stmtacct的循环是否被渲染(即使样式有问题,源代码中也应该能看到对应的HTML结构); - 检查CSS是否设置了
display: none等属性,隐藏了该部分内容。
内容的提问来源于stack exchange,提问作者akin ayo
相关产品推荐
相关产品推荐

