Child.objects.select_related("parent").filter(parent=parent_instance)
或Child.objects.filter(parent=parent_instance).select_related("parent")
哪一个更省时间?
我不确定哪一个查询次数最少并提高了性能
Child.objects.select_related("parent").filter(parent=parent_instance)
或Child.objects.filter(parent=parent_instance).select_related("parent")
哪一个更省时间?
我不确定哪一个查询次数最少并提高了性能
两者都将导致相同的查询.需要从not到.select_related(…)
[Django-doc]或.prefetch_related(…)
[Django-doc]才能过滤.如果您对相关项进行筛选,它将只进行联接.
.select_related(…)
的 idea 只是将相关模型添加到SELECT
子句中,并防止在获得由查询集产生的Child
中的任何一个的.parent
属性时进行查询.
根据用例的不同,您可能不需要在子句中 Select 父级,例如,如果您只渲染Child
个对象的字段,在这种情况下,最有效的方法是:
Child.objects.filter(parent=parent_instance)
或者:
parent_instance.child_set.all()