2

我在 views.py 文件中运行 SQL 查询,根据返回的值,我需要在 .html 文件的列中显示不同的数据。

如果:

customer_id 不为 null,则详细信息列应显示 customer_id 和名称。

如果:

customer_id 为空,则详细信息列应显示部门名称和描述。

因此,数据库中有数字。有些分配给客户,有些分配给部门。该表的基本目的是显示数字列表及其分配的内容。

@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 查询,它正在从数据库中提取正确的数据。我迷失了如何过滤结果并根据标准正确显示输出。

有什么建议么?如果我缺少任何信息,请告诉我。谢谢你。

4

2 回答 2

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 %}
...
于 2013-06-26T15:47:14.960 回答
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 %}
于 2013-06-26T16:28:12.963 回答