我正在学习django,我目前正在开展一个博客项目。我有一个基本的搜索功能,相应地过滤帖子。 通过在帖子的标题和内容过滤器中搜索内容,它可以正常工作。我正在尝试添加一个新的过滤器,以便我可以输入月份,例如" March"然后它将过滤掉3月份发布的所有帖子。 Post的所有模型(只是博客上的普通帖子)都有:
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年7月12日"如果发布日期设置为2016-07-12。
就像我提到的那样,搜索功能可以在标题或内容=查询时过滤帖子,但如果我搜索" 7月和#34;它就不起作用。然后它不会返回任何帖子。
我想知道我能做什么,所以它也可以按发布日期过滤帖子。
答案 0 :(得分:0)
我找到了解决方案。我意识到,如果我搜索" 07"而不是7月,它相应地筛选出帖子,所以目前正在解决我的问题,因为博客目前只会被我使用。它显然可以用一些python转换为月份字。
这是因为您以yyyy / mm / dd格式输入DateField。因此,Post.publish也将采用这种格式。