【问题标题】:Q-objects in DjangoDjango 中的 Q 对象
【发布时间】:2015-04-13 10:49:50
【问题描述】:

如何通过过滤器获得的 var 值进行选择,然后在循环中附加一个值?

items = Item.objects.filter(Q(var__icontains=term) | Q(another_var__icontains=term))
res = []
for item in items:
    res.append({
        'val': item.(var or another_var?),
    })

【问题讨论】:

    标签: python django django-queryset django-q


    【解决方案1】:

    恐怕您必须手动检查var/anohter_var才能找到查询集中匹配的变量。

    items = Item.objects.filter(Q(var__icontains=term) |
                                Q(another_var__icontains=term))
    uterm = term.upper()
    res = []
    for item in items:
        value = item.var if uterm in item.var.upper() else item.another_var
        res.append({'val': value})
    

    【讨论】:

      【解决方案2】:

      在本地检查,或执行两个不同的查询。 第一个选项:

      items = Item.objects.filter(Q(var__icontains=term) | Q(another_var__icontains=term))
      res = []
      for item in items:
          if term.lower() in item.var.lower():
              v = item.var
          else:
              v = item.another_var
          res.append({
              'val': v,
          })
      

      第二个选项,只做两个查询(两个过滤器调用)。

      【讨论】:

        猜你喜欢
        • 2013-05-30
        • 2014-02-06
        • 2015-07-15
        • 2016-01-05
        • 2015-03-14
        • 2011-05-30
        • 2012-03-31
        • 2010-12-27
        • 2011-08-16
        相关资源
        最近更新 更多