Django - get()返回多个返回700

时间:2016-09-23 13:05:35

标签: django python-2.7 django-views

我遇到搜索表单问题。我正在尝试创建一个查询数据库的搜索字段,并在结果页面上返回结果。我有一个页面返回1个结果与一个查询和另一个查询多行我得到此错误 get()返回多个MyModel - 它返回791!。这可能看起来很傻,因为我是Django Forms的新手。如果您需要任何其他信息,请告诉我。我尝试过使用.filter,但没有返回任何内容。我已经看过多个SO问题,有些已经帮助但仍有一点问题。我的代码如下:

views.py

from django.shortcuts import render
from .models import Model


def index(request):
    return render(request, 'index.html')


def search(request):
    query = request.GET.get('q')
    if query:
        query = str(query)
        results = myModel.objects.get(
           site=query
        )
        context = {"results": results}
    return render(request, 'results.html', context)

results.html

{% if results %}
    <ul>
         <li><p>{{ results.url }}</p></li>
    </ul>
{% else %}
    <p>Nothing Available.</p>
{% endif %}

的index.html

<form action="/results/" method="GET">
{% csrf_token %}
<input  id="search_box" type="text" name="q"  placeholder="Search...">
<button id="search_submit" type="submit" class="btn btn-defaultbtnlg"><i class="fa fa-search fa-fw"></i> <span class="networkname">Search</span></button>
</form>

1 个答案:

答案 0 :(得分:2)

您的搜索查询可以返回多个结果,因此您应该使用filter()代替get()

results = myModel.objects.filter(
   site=query
)

然后在你的模板中循环结果

{% if results %}
    <ul>
        {% for result in results %}
        <li><p>{{ result.url }}</p></li>
        {% endfor %}
    </ul>
{% else %}
    <p>Nothing Available.</p>
{% endif %}