Python django在树状表中选择与预取相关的\u
我有一个这样的模型:Python django在树状表中选择与预取相关的\u,python,django,django-models,parent,hierarchy,Python,Django,Django Models,Parent,Hierarchy,我有一个这样的模型: class Category(models.Model): name = models.CharField(max_length=20) parent = models.ForeignKey('self', null=True) 我进行以下查询: categories = Category.objects.filter(name__contains=something) 我想预选两级以上的家长。 因此,我将能够迭代它们并执行 category.parent.
class Category(models.Model):
name = models.CharField(max_length=20)
parent = models.ForeignKey('self', null=True)
我进行以下查询:
categories = Category.objects.filter(name__contains=something)
我想预选两级以上的家长。
因此,我将能够迭代它们并执行
category.parent.parent
没有额外的疑问
在SQL中,这相当于两次使用同一个表进行左连接。
如何在django ORM中执行此操作?如果您使用的是
category.parent.parent
,则将外键向前移动两次。因此,您可以使用选择\u related
Category.objects.filter(name__contains=something).select_related('parent__parent')
如果您正在向后跟踪外键(即获取类别的子项),则与预取相关的将非常有用
您可能需要查看是否存储类别树。它可能会使其他查询更高效。如果使用的是
category.parent.parent
,则会将外键向前移动两次。因此,您可以使用选择\u related
Category.objects.filter(name__contains=something).select_related('parent__parent')
如果您正在向后跟踪外键(即获取类别的子项),则与预取相关的将非常有用
您可能需要查看是否存储类别树。这可能会使其他查询更高效