我在views.py文件中运行SQL查询,根据返回的值,我需要在.html文件的列中显示不同的数据。
如果:
customer_id不为null,则详细信息列应显示customer_id和name。
如果:
customer_id为null,则详细信息列应显示部门名称和说明。
因此,数据库中有数字。一些分配给客户,一些分配给一个部门。该表的基本用途是显示数字列表及其分配的内容。
@render_to('customer/available_numbers.html')
def AvailableNumbers(request):
cur = NumberList()
sql = '''
SELECT
cpt.number,
cpt.call_type,
cpt.customer_id,
cpt.profile_id
c.name,
pro.department_name,
pro.description
FROM customerphonetable AS cpt
LEFT OUTER JOIN customer AS c
ON (cpt.customer_id = c.customer_id)
LEFT OUTER JOIN profile AS pro
ON (cpt.profile_id = pro.profile_id)
WHERE cpt.number IS NOT NULL
'''
cur.execute(sql)
rows = [dictify(row) for row in cur]
return dict(rows=rows, cnt=len(rows))
def dictify(row):
return dict(zip([cd[0] for cd in row.cursor_description], row))
NumberList()连接到数据库。
html文件设置为显示如下数据:
{% block content %}
<table class ="table table-striped table-bordered">
<thead>
<tr>
<th>Phone Number</th>
<th>Call Type</th>
<th>Detail</th>
</tr>
</thead>
<tbody>
{% for row in rows %}
<tr>
<td>{{ row.number }}</td>
<td>{{ row.call_type }}</td>
<td>{{ ???? }}</td>
</tr>
{% endfor %}
</tbody>
</table>
我已经测试了SQL查询,它正在从数据库中提取正确的数据。我迷失了如何过滤结果并根据标准正确显示输出。
有什么建议吗?如果我遗漏任何信息,请告诉我。谢谢。
答案 0 :(得分:2)
您可以尝试这样的事情:
{% for row in rows %}
<tr>
<td>{{ row.number }}</td>
<td>{{ row.call_type }}</td>
{% if row.customer_id %}
<td>{{ row.costumer_id }}</td>
{% else %}
<td>{{ row.department_name }}{{ row.description }}</td>
{% endif %}
<td>{{ ???? }}</td>
</tr>
{% endfor %}
我不知道您使用的是什么框架或ORM(如果有的话),但您可以尝试使用其中的变体:
{% ifequal row.costumer_id NULL %}
{% ifequal row.costumer_id None %}
...
答案 1 :(得分:1)
感谢PepperoniPizza,这似乎成了诀窍:
{% for row in rows %}
<tr>
<td>{{ row.number }}</td>
<td>{{ row.call_type }}</td>
{% if row.customer_id == None %}
<td>{{ row.department_name }}, {{ row.description }}</td>
{% else %}
<td>{{ row.customer_id }}, {{ row.name }}</td>
{% endif %}
</tr>
{% end for %}