Python Django查询集或语句

Python Django查询集或语句,python,django,Python,Django,有没有一种方法可以在Django中获取查询集,以便剩余的对象至少满足一个约束条件(即OR语句) 比如: remaining = Fruits.objects.all() fruit_type = ['apple', 'orange'] # input from user for fruit in fruit_type: remaining = remaining.filter(FruitType__icontains=fruit) 但是,以上仅返回同时包含“orange”和“apple”

有没有一种方法可以在Django中获取查询集,以便剩余的对象至少满足一个约束条件(即OR语句)

比如:

remaining = Fruits.objects.all()

fruit_type = ['apple', 'orange'] # input from user
for fruit in fruit_type:
  remaining = remaining.filter(FruitType__icontains=fruit)

但是,以上仅返回同时包含“orange”和“apple”的水果类型(而不是orange或apple)。

您可以使用Q对象执行复杂的查询集

from django.db.models import Q

for fruit in fruit_type:
    query |= Q(FruitType__icontains=fruit)

# Query the model
remaining = remaining.filter(query)
有关更多信息,请参阅django文档

你能行

from django.db.models import Q
query = Q()
for fruit in fruit_type:
    query |= Q(FruitType__icontains=fruit)
remaining = remaining.filter(query)

检查此问题浏览此链接是否有方法将其集成到
for
循环中?用户输入fruit_类型,使其长度为0到10。最坏的情况是我可以写10个
if
语句。无论如何,谢谢你的帮助!是的,你可以。我编辑了anser,希望能有所帮助。
from django.db.models import Q
query = Q()
for fruit in fruit_type:
    query |= Q(FruitType__icontains=fruit)
remaining = remaining.filter(query)