这段代码如何?一步步
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)
每一行发生了什么?
您从 GET 调用中收到一个关键字列表,然后将其拆分为一个关键字列表。
您遍历关键字,并为每个关键字构建一个存储在 q 中的 OR 查询。您正在数据库中查询在标题或内容中找到关键字的新闻对象。
在最后一行中,您将过滤掉与您的查询匹配的新闻项目。
您可以在此处找到有关 Q 参数的更多信息:https ://docs.djangoproject.com/en/dev/topics/db/queries/#complex-lookups-with-q-objects
该| char 表示或。