我需要从变长列表中获取所有包含所有“部分”的书籍。
喜欢(不工作):
title_list = ['tree', 'sun']
books = Books.objects.filter(title__icontains=title_list)
或在SQL(工作)中:
SELECT * FROM `books` WHERE title LIKE '%tree%' AND title LIKE '%sun%';
我该怎么做?
答案 0 :(得分:3)
这似乎有效:
from django.db.models import Q
title_list = ['tree', 'sun']
Books.objects.filter(reduce(lambda a, b: a & b, [Q(title__icontains=title) for title in title_list]))