这段代码怎么样?一步步骤
keyword = request.GET['keyword']
for l in keyword.split():
q = q | (
Q(title__icontains=smart_str(l)) |
Q(content__icontains=smart_str(l))
)
result = News.objects.filter(q)
每行发生了什么?
答案 0 :(得分:1)
您正在接收GET通话中的关键字列表,然后将其拆分为关键字列表。
循环遍历关键字,并为每个关键字构建一个存储在q中的OR查询。您正在查询数据库中的新闻对象,其中的关键字位于标题或内容中。
在最后一行中,您将过滤掉与您的查询匹配的新闻项。
您可以在此处找到有关Q参数的更多信息:https://docs.djangoproject.com/en/dev/topics/db/queries/#complex-lookups-with-q-objects
| char表示OR。