Простое поисковое упражнение из DjangoBook Chapter 7 - PullRequest
0 голосов
/ 06 марта 2012

Кажется, теперь работает, все, что я изменил, было chartext на charfield в моих моделях. Почему он не будет искать в текстовом формате? Это было исправлением?

У меня возникла проблема с разделом 7 djangobook, где мы показываем результаты нашего поиска книг. Я не пользуюсь книгами, но я не знаю, что я делаю неправильно.

Примечание: поисковый запрос "q" проходит правильно, он просто не показывает результаты. Шаблон действительно появляется, хотя. Я собирался просто пропустить это, но я действительно начинаю задумываться, что еще я мог делать не так?

Я слежу за: http://djangobook.com/en/2.0/chapter07/

вот мой код

urls.py

from django.conf.urls.defaults import patterns, include, url
from EM.catalog import views

urlpatterns = patterns('',
                   (r'^search-form/$', views.search_form),
                   (r'^search/$', views.search),

views.py

from django.template import loader, Context
from django.shortcuts import render_to_response
from django.http import HttpResponse
from EM.catalog.models import em_tank

def search_form(request):
    return render_to_response('search_form.html')

def search(request):
if 'q' in request.GET and request.GET['q']:
    q = request.GET['q']
    tanknotes = em_tank.objects.filter(em_tank_notes__icontains=q)
    return render_to_response('search-results.html', {'tanknotes': tanknotes, 'query': q})
else:
        return HttpResponse("Please input a search term")

Поиск-results.html

<p>You searched for: <strong>{{ query }}</strong></p>

{% if tanknotes %}
<p>Found {{ tanknotes|length }} result{{ tanknotes|pluralize }}.</p>
<ul>
    {% for em_tank_notes in tanknotes %}
    <li>{{ em_tank.em_tank_notes }}</li>
    {% endfor %}
</ul>
{% else %}
<p>No tanks matched your search criteria.</p>
{% endif %}

модель

from django.db import models
class em_tank(models.Model):
    em_tank_date_acquired = models.DateField()
    em_tank_notes = models.CharField(max_length=150, verbose_name='Notes', blank=True)
...