Я просто не понимаю, что здесь происходит, и я потратил много времени, пытаясь отладить эту вещь (которую я взял прямо из книги Django). Функциональность поиска фактически работала при первой загрузке сайта. Затем мне пришлось сделать некоторую отладку, чтобы заставить другие части работать, и функциональность поиска внезапно сломалась.
Когда я отправляю форму, я получаю 404 сообщение о том, что «история не существует», хотя на самом деле она сохраняется в моем администраторе (и, следовательно, в моей базе данных). Запрос Get, добавленный к URL, кажется правильным. Он объединяет несколько слов.
Я знаю, что это так просто, и это действительно сработало, прежде чем я не понял. Также интересно, что в книге, из которой я взял этот код, не было второго Q после символа (|). Я думал, что это опечатка, и всякий раз, когда я пытаюсь удалить его, весь сайт терпит неудачу (включая шаблон администратора). Это тоже странно.
from cms.models import Story, Category
from django.db.models import Q
from django.shortcuts import render_to_response, get_object_or_404
def search(request):
if 'q' in request.GET:
term = request.GET['q']
story_list = Story.objects.filter(
Q(title__contains=term) | Q(markdown_content__contains=term))
heading = "Search results"
return render_to_response("cms/story_list.html", locals())