假设我有以下型号
German
和class PizzaOrder(models.Model):
order = models.CharField(max_length=200)
class Topping(models.Model)
topping = models.CharField(max_length=50)
这样的
PizzaOrder
是否可以通过django的ORM执行单个查询以获取此order = PizzaOrder.objects.create(
order='large pizza with onions, mushrooms and tuna'
)
中使用的所有配件?
这很有效,但价格昂贵:
PizzaOrder
答案 0 :(得分:0)
您可以使用django过滤器。 由于您与PizzaOrder表中的Topping没有任何关系,因此您需要访问所有要在订单表中搜索的配料。
import operator
from django.db.models import Q
toppings = Topping.objects.all()
topping_list = [topping.topping for topping in toppings]
query = reduce(operator.and_, (Q(order__icontains= item) for item in topping_list))
orders = PizzaOrder.objects.filter(query).distinct()
但我强烈建议在Topping和Order表之间创建一个关系,因为它会高度优化您的查询查询。