如何与Django ManyToMany字段相反的prefetch_related [英] How to prefetch_related in reverse of a Django ManyToMany field
本文介绍了如何与Django ManyToMany字段相反的prefetch_related的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在Django中,如果我有ManyToManyField:
In Django, if I have a 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)
使用 Pizza.objects.all().prefetch_related('toppings')
如何执行同样的操作,但反过来,是要从 Topping
查询集中预取 pizza_set
?
How can I do the same but in reverse, to prefetch the pizza_set
from a Topping
queryset?
这不起作用,我在文档中找不到它:
This doesn't work, and I couldn't find it in the docs:
Topping.objects.all().prefetch_related('pizza_set')
推荐答案
如果您以这种方式访问预取的披萨,这应该可以工作:
This should work if you access the prefetched pizzas like this:
topping.pizza_set.all()
如果您做类似的事情
topping.pizza_set.filter(...some conditions etc...)
然后它将不起作用,并且这是预期的(因为仅预取特定的查询结果).
then it won't work and this is expected (as only specific query result is prefetched).
这篇关于如何与Django ManyToMany字段相反的prefetch_related的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文