Python Django查询集或语句
有没有一种方法可以在Django中获取查询集,以便剩余的对象至少满足一个约束条件(即OR语句) 比如: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”
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)