Django-选择列表中的所有模型对象

Django-选择列表中的所有模型对象,django,django-models,Django,Django Models,我有一个模型: class SupplierOffer(models.Model): name = models.CharField(max_length=255, blank=True) code = models.CharField(max_length=255, blank=True) brand = models.CharField(max_length=255, blank=True) 从外部API中,我得到了一个代码品牌列表: api_list = [Cod

我有一个模型:

class SupplierOffer(models.Model):
    name = models.CharField(max_length=255, blank=True)
    code = models.CharField(max_length=255, blank=True)
    brand = models.CharField(max_length=255, blank=True)
从外部API中,我得到了一个代码品牌列表:

api_list = [CodeBrand(code=u'N00105004004', brand=u'NOVONOL'), CodeBrand(code=u'N00105004004', brand=u'Preston')]
我想筛选与API列表项匹配的所有供应商报价,如下所示:

result = []
for item in api_list:
    result.extend(list(SupplierOffer.objects.filter(code=item.code, brand=item.brand)))
这并不是最好的解决方案,因为它对api_列表中的每个项进行1db查询


如何在1db查询中筛选报价?

您可以使用
Q
querys():


您将有一个DB请求。

您可以使用
Q
查询():


您将有一个DB请求。

规范化您的模型并在筛选器中使用简单的pk\u。@IvanStarostin他想查询同时匹配两个字段的
SupplierOffer
。规范化您的模型并在筛选器中使用简单的pk\u。@IvanStarostin他想查询同时匹配两个字段的
SupplierOffer
。您的意思是`SupplierOffer.objects.filter(query)`在最后一行?是的,在上面的代码中只执行一个查询。您的意思是在最后一行'SupplierOffer.objects.filter(query)`是的,在上面的代码中只执行一个查询。
from django.db.models import Q

query = Q()
for item in api_list:
    query |= (Q(code=item.code) & Q(brand=item.brand))

SupplierOffer.objects.filter(query)