这段代码如何? GET方法和Q对象[关闭]

Posted

技术标签:

【中文标题】这段代码如何? GET方法和Q对象[关闭]【英文标题】:How does this code? GET method and Q objects [closed] 【发布时间】:2012-06-02 15:33:51 【问题描述】:

这段代码如何?循序渐进

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)

每一行发生了什么?

【问题讨论】:

请修正缩进并澄清您的问题。 认为正在发生什么?哪个部分让你感到困惑? whathaveyoutried.com 【参考方案1】:

您从 GET 调用中收到一个关键字列表,然后您将其拆分为一个关键字列表。

您遍历关键字并为每个关键字构建一个存储在 q 中的 OR 查询。您正在数据库中查询在标题或内容中找到关键字的新闻对象。

在最后一行中,您将过滤掉与您的查询匹配的新闻项目。

您可以在此处找到有关 Q 参数的更多信息:https://docs.djangoproject.com/en/dev/topics/db/queries/#complex-lookups-with-q-objects

该 | char 表示或。

【讨论】:

以上是关于这段代码如何? GET方法和Q对象[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何使这段代码更短[关闭]

Django/Python DRY:使用 Q 对象和模型属性时如何避免重复代码

如何在 Swift 中重写这段代码? [关闭]

排序函数在 C++ 算法中是如何工作的,以及如何改进这段代码? [关闭]

这段代码是如何工作的?具体来说,WorkerCompare 结构 [关闭]

如何在函数式编程映射方法中模拟“返回”语句(或其他使该代码工作和可读的方法)[关闭]