Python Django模型复滤波器

Python Django模型复滤波器,python,django,django-forms,Python,Django,Django Forms,以下是模型属性: name, version, date_added, last_modified 我有这样一份清单: [(name1, version1), (name2, version2), (name3, version3)...] 我想按(名称、版本)元组过滤模型。我该怎么做呢?您可以这样做: from operator import or_ from django.db.models import Q l = [(name1, version1), (name2

以下是模型属性:

    name, version, date_added, last_modified
我有这样一份清单:

    [(name1, version1), (name2, version2), (name3, version3)...]

我想按(名称、版本)元组过滤模型。我该怎么做呢?

您可以这样做:

from operator import or_
from django.db.models import Q

l = [(name1, version1), (name2, version2), (name3, version3)...]

data = YourModel.objects.filter(reduce(or_, Q(name=name, version=version)
                                            for name, version in l))

我认为sql中的
和django orm都是为单个字段设计的。

您可以这样做:

from operator import or_
from django.db.models import Q

l = [(name1, version1), (name2, version2), (name3, version3)...]

data = YourModel.objects.filter(reduce(or_, Q(name=name, version=version)
                                            for name, version in l))

我认为sql中的
和django orm都是为单个字段设计的。

对于列表中的每个元组,筛选是什么意思?我想从数据库中获取对象。你能想象相应的sql查询吗?这是无效的sql代码。至少对于postgres和MS SQL.select*from database d,list l其中d.name=l.name和d.version=l.version过滤器对于列表中的每个元组是什么意思我希望从数据库中获取对象。您能想象相应的SQL查询吗?这是无效的SQL代码。至少对于postgres和MS SQL.select*数据库d,列出l,其中d.name=l.name和d.version=l.version