2016-06-17 28 views
1

我在学习django,目前我正在开发一个博客项目。我有一个基本的搜索功能,相应地过滤这些帖子。 它通过搜索我的标题和帖子的内容过滤器中的内容工作正常。我正在尝试添加一个新的过滤器,以便我可以在例如“March”中输入月份,然后过滤掉所有3月份发布的帖子。帖子(只是普通帖子在博客)的所有机型都有:Django搜索帖子查询过滤器月

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() 

在模板中,如果发布日期设置为2016-07-12,则发布属性如下所示:“2016年7月12日”。

就像我提到的那样,搜索功能在标题或内容=查询时过滤了帖子,但如果我搜索“July”,它不起作用。然后它不会返回任何帖子。

我想知道我能做什么,因此它可以通过发布日期过滤帖子。

回答

0

我找到了解决方案。我意识到,如果我搜索“07”而不是7月,它会相应地过滤掉帖子,所以目前解决了我的问题,因为博客目前只能用于我。它显然可以转换为一些python的月份字。

这是因为您输入格式为yyyy/mm/dd的DateField。因此Post.publish也将采用这种格式。