6👍
✅
You can combine reduce and Q, see The power of django’s Q objects post.
from django.db.models import Q
import operator
auths = [ "111", "333" ]
query = reduce(operator.and_, [ Q(author__name__icontains=x) for x in auths ] )
books = Book.objects.filter( query )
0👍
This one is for dynamic auth list:
pk_list = qs.values_list('pk', flat=True) # i.e [] or [1, 2, 3]
if len(pk_list) == 0:
Book.objects.none()
else:
q = None
for pk in pk_list:
if q is None:
q = Q(pk=pk)
else:
q = q | Q(pk=pk)
Book.objects.filter(q)
- [Django]-DJango URL Reverse Error: argument to reversed() must be a sequence
- [Django]-What file or module actually generates "It worked" in Django tutorials?
Source:stackexchange.com