我有一个django模型和一个字段代表一个用户的全名。我的客户希望我设置一个筛选器,以基于一组字符串搜索用户,其中全部名称都必须是不区分大小写的。过滤Django数据库的字段包含数组中的任何值
例如
如果用户full_name = "Keith, Thomson S."
而且我有一个列表['keith','s','thomson']
我想执行的过滤器相当于
Profile.objects.filter(full_name__icontains='keith',full_name__icontains='s',full_name__icontains='thomson')
问题是这样的名单可以动态大小 - 所以我不知道如何做到这一点。
任何人有任何想法?
我不知道链接所有这些过滤器后,最终的sql表达式会变成什么样子。 – akonsu
@akonsu我只是试了一下(好吧,类似的东西) - 它被转换为'where子句中的一系列'AND's,即'full_name LIKE%keith%AND full_name LIKE%s%AND ... ' –
@isbadawi,+1 - 请注意,多个Q对象的默认运算符是AND,因此您可以在不使用reduce/operator.and_的情况下运行“* [Q1,Q2,Q3]”。 –