在Django中,如果我有一个ManyToManyField:
class Topping(models.Model):
name = models.CharField(max_length=30)
class Pizza(models.Model):
name = models.CharField(max_length=50)
toppings = models.ManyToManyField(Topping)
使用prefetch_related()访问Pizza
模型的toppings
字段时,我可以最大限度地减少对数据库的匹配:
Pizza.objects.all().prefetch_related('toppings')
如何以相反的方式执行相同操作,从pizza_set
查询集中预取Topping
?
这不起作用,我在文档中找不到它:
Topping.objects.all().prefetch_related('pizza_set')
答案 0 :(得分:0)
如果你像这样访问预取的比萨饼,这应该有效:
topping.pizza_set.all()
如果您执行类似
的操作topping.pizza_set.filter(...some conditions etc...)
然后它不会工作,这是预期的(因为只预取了特定的查询结果)。