【问题标题】:Dynmically add arguments to queryset filter call in django [duplicate]在django中动态添加参数到queryset过滤器调用[重复]
【发布时间】:2018-09-01 13:12:00
【问题描述】:

我有一个字符串列表,它将动态生成。所以它将是可变长度的:

keywords = ['apples','oranges','bananas']

我有一个模型 Fruitsalad,带有“描述”字段。假设我想在“描述”字段中查找所有带有“苹果”、“橙子”或“香蕉”的水果沙拉

results = Fruitsalad.objects.filter(Q(description__icontains=keywords[0]) | Q(description__icontains=keywords[1] | Q(description__icontains=keywords[2])

如果我事先不知道“关键字”列表的长度,我该如何生成上述查询?

【问题讨论】:

    标签: django django-queryset


    【解决方案1】:

    你应该遍历你的数组,并对每个结果做一个联合

    allresults = Fruitsalad.objects.all()
    keywords = ['apples','oranges','bananas']
    queryset = None
    for keyword in keywords:
        if queryset == None:
            queryset = allresults.filter(description__icontains=keyword)
        else:
            queryset = queryset.union(allresults.filter(description__icontains=keyword))
    
    #here are the desired results
    print(queryset)
    

    【讨论】:

      猜你喜欢
      • 2016-03-22
      • 2014-07-13
      • 2016-09-07
      • 1970-01-01
      • 2013-09-08
      • 2021-06-16
      • 2014-11-03
      • 2010-09-23
      相关资源
      最近更新 更多