【发布时间】:2016-12-25 21:29:03
【问题描述】:
我的网站有一堆 Thread 对象
>>> Thread.objects.filter(board__name='Fitness')
[<Thread: lorem>, <Thread: lorems>, <Thread: LOREM>]
每个用户都有一个过滤器列表,(Postgresql Array Field)
>>> filters
['lorem', 'adipisci', 'amet', 'dolor']
我希望能够排除用户过滤器列表中的线程。到目前为止,这是我能够实现这一目标的唯一方法:
>>> Thread.objects.filter(board__name='Fitness').exclude(reduce(operator.or_, (Q(title__icontains=x) for x in filters)))
[]
我想知道是否有办法在 Django 中使用 in 运算符进行不区分大小写的检查。由于以下不起作用
>>> Thread.objects.filter(board__name='Fitness').exclude(title__in=filters)
[<Thread: lorems>, <Thread: LOREM>]
最好在 Django 中,而不必弄乱数据库本身
【问题讨论】:
标签: django python-3.x orm