需要将多个过滤器应用于QuerySet
。我应该多次查询数据库,还是在Python
?
data = Data.objects.all()
for f in somefilters:
tempdata = data.filter(*f.args)
# do work
or
data = list(Data.objects.all())
for f in somefilters:
tempdata = filter(data, key=...)
#do work
答案 0 :(得分:4)
除非你有一些荒谬的过滤器,否则你应该只使用Q
objects。这就是他们的目的。
from django.db.models import Q
q = Q()
for filter in filters:
q |= Q(*f.args)
data = Data.objects.filter(q)
# Do things with `data`