2016-06-17 8 views
1

Я изучаю django, и сейчас я работаю над проектом блога. У меня есть функция основного поиска, которая соответственно фильтрует сообщения. Он отлично работает, ища контент в моих заголовках и фильтрах содержимого сообщений. Я пытаюсь добавить новый фильтр, чтобы я мог ввести месяц, например «Март», а затем отфильтровать все сообщения, опубликованные в марте. Все модели Post (только нормальный пост в блоге) имеет следующее:Django search posts filter filter

models.py 

class Post(models.Model): 
    title = models.CharField(max_length=120) 
    content = models.TextField() 
    publish = models.DateField(auto_now=False, auto_now_add=False) 

И в моем views.py У меня есть следующие функции поиска: (только соответствующие вещи)

views.py 

queryset_list = Post.objects.all() 
query = request.GET.get("q") 
    if query: 
     queryset_list = queryset_list.filter(
     Q(title__icontains=query) | 
     Q(content__icontains=query) | 
     Q(publish__icontains=query) 
     ).distinct() 

В шаблоне атрибут публикации отображается следующим образом: «12 июля 2016 года», если дата публикации установлена ​​в 2016-07-12.

Как я уже упоминал, функция поиска фильтрует сообщения в порядке, когда заголовок или контент = для запроса, но он не работает, если я ищу «Июль». Затем он не возвращает никаких сообщений.

Я хотел бы знать, что я могу сделать, чтобы он мог фильтровать сообщения по дате публикации.

ответ

0

Я нашел решение. Я понял, что если я ищу «07» вместо июля, он отфильтровывает сообщения соответственно, поэтому в настоящее время это решает мою проблему, так как блог будет использоваться только моим моментом. Очевидно, что он может быть преобразован в слово месяца с некоторым python.

Это потому, что вы вводите DateField в формате yyyy/mm/dd. Таким образом, Post.publish также будет в этом формате.