【问题标题】:Concatenating filter requests with a loop in django在 django 中使用循环连接过滤器请求
【发布时间】:2016-08-29 15:13:58
【问题描述】:

我有一个字符串列表,我需要确定它们是否出现在我的模型名称中。目前我正在使用一系列 if 和 elif 语句来确定我的字符串列表中有多少个字符串,然后像这样对我的数据库执行过滤请求(这可行,但效率极低,因为我不断重复自己):

#example if my list contained only 2 strings

if len(listOfStrings) == 2:


    queryResults = MyModel.objects.filter(Q(name__contains=listOfStrings[0])|Q(name__contains=listOfStrings[1]))

然后我根据这些查询的结果通知客户。如果我分别针对我的模型测试字符串,我可能会得到相同的模型(因为某些模型名称包含所有三个或两个字符串)然后通知客户端两次。所以我想用这样的for循环来解决这个问题

listOfStrings = {"string1","string2","string3"}
queryResults = ""
for string in listOfStrings:
    queryResults += MyModel.objects.filter(name__contains=string)

我知道filter() 方法是惰性的,不会立即执行,而且这个python 逻辑很可能是错误的。但是如何连接过滤器请求以避免重复的模型结果。

【问题讨论】:

  • 检查此post 可能会有所帮助

标签: python django


【解决方案1】:

您可能想要使用distinct 过滤器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-16
    • 1970-01-01
    • 2018-02-21
    • 1970-01-01
    • 2018-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多