Задать вопрос
@sergey19940808

Django, как сделать простой поиск по атрибутам?

Вьюшка:
def search_foto(request):
        title = 'Поиск'

        try:
            query = request.GET['query']
            posts = OurFoto.objects.filter(name__startswith=query) | \
                OurFoto.objects.filter(text__startswith=query) or \
                OurFoto.objects.filter(date_added__startswith=query)
            context = {'title': title, 'posts': posts, 'query': query}
            return render(request, 'repository_our_fotos/search_form.html', context)

        except KeyError:
            return render(request, 'repository_our_fotos/search_form.html')

Почему при совпадении всех атрибутов выдаёт правильный результат, а когда первые 2 верны, а последний не верный, выдаёт другие результаты ? Как написать вьюшку, чтобы реализовать это ?
  • Вопрос задан
  • 366 просмотров
Подписаться 1 Оценить Комментировать
Ответ пользователя Dmitry Tiunov К ответам на вопрос (2)
https://docs.djangoproject.com/en/1.11/topics/db/q...
Для запросов с оператором OR надо использовать Q object.

from django.db.models import Q


posts = OurFoto.objects.filter(
    Q(name__startswith=query) | Q(text__startswith=query) | Q(date_added__startswith=query)
)
Ответ написан