Django icontains不在网站上工作,就像它在shell中一样

时间:2013-06-25 20:15:16

标签: django filter

我正在尝试使用简单的搜索表单根据用户输入进行过滤。 以下是我的views.py

中的相关代码
def search(request):
    error = False
    if 'q' in request.GET and request.GET['q']:
        q = request.GET['q']
        if not q:
            error = True
        elif len(q) > 20:
            error = True
        else:
            chemicals = Chemicals.objects.filter(Name__icontains=q)
            return render_to_response('search_results.html', locals(), context_instance=RequestContext(request))
    return render_to_response('search_form.html',{'error':True})

模板

<table>
    <th>Barcode</th>
    <th>Name</th>
    <th>Description</th>
    {% for chemical in chemicals %}
       {% ifequal chemical.Name q %}
      <tr>
      <td>{{ chemical.Barcode }}     </td>
      <td>{{ chemical.Name }}        </td>
      <td>{{ chemical.Description }} </td>
       {% endifequal %}
    {% endfor %}
</table>

下一篇文章是我在search_results.html中嵌入的内容

一个例子是我有一种名为硝酸的化学物质。如果我在搜索栏中放入硝酸,它将显示所有具有硝酸名称的所有相关信息。它也是区分大小写,我认为icontains不应该是。同时搜索硝酸,硝酸,酸或酸也没有结果,这让我觉得有些不对劲。我在shell中使用了相同的命令,它完成了我原本预期的操作,但它在网站上的执行情况并不相同。有没有人知道为什么会这样? 谢谢,

1 个答案:

答案 0 :(得分:1)

问题在于您的ifequal测试:

{% ifequal chemical.Name q %}

除非化学名称恰好等于q,否则不会显示该行。