を使用して2つのテーブル上の2つのフィルタ:のは、これが私のモデルであると仮定してみましょうprefetch_related
class Pizza(models.Model):
size = models.IntegerField()
#other fields
class Order(models.Model):
date = models.DateField()
pizza = models.ManyToManyField(Pizza, through='OrderPizza')
#other fields
class OrderPizza(models.Model):
update = models.BooleanField()
order = models.ForeignKey(Order, on_delete=models.CASCADE)
pizza = models.ForeignKey(Pizza, on_delete=models.CASCADE)
私はラストオーダーピザのIDの中に見てみサイズで32 私は一つだけを使用していることをどのように行うことができますクエリーセット?
#I take the last order:
last_order = Orders.objects.filter().order_by('-order_number')[:1]
#If we have at least one order
if last_order:
var_last_order_id = last_order[0].id
#First filter
queryset_orders = Orders.objects.filter(id=var_last_order_id).prefetch_related('pizza')
for food in queryset_orders:
#Second filter
pizza32 = food.pizza.filter(size = 32)
print pizza32.id
は、私はちょうど代わりqueryset_ordersの唯一のクエリを作成したい= Orders.objects.filter(ID = var_last_order_id).prefetch_related(「ピザ」)とpizza32 = food.pizza.filter(size = 32)それは可能だと思いますか? – Steve
私はあなたができるとは思わない。 1つのクエリでそれを行うのは何ですか? –