自身的 Django 外键
Django Foreign key on self
型号:
class Category(models.Model):
name = models.CharField()
parent = models.ForeignKey('self', null=True, related_name='subcategories')
每次函数调用都会访问数据库:
def get_children(elem, lst):
lst.append(elem.pk)
children = elem.subcategories.all()
if not children: return
for c in children:
get_children(c, lst)
lst=[]
get_children(Category.objects.prefetch_related('subcategories').get(pk=1), lst) # prefetch related is not working
如何在一次查询中获取所有 table?
您无法通过一次查询获取所有子项。您应该考虑对分层数据使用 django-mptt 应用程序。
型号:
class Category(models.Model):
name = models.CharField()
parent = models.ForeignKey('self', null=True, related_name='subcategories')
每次函数调用都会访问数据库:
def get_children(elem, lst):
lst.append(elem.pk)
children = elem.subcategories.all()
if not children: return
for c in children:
get_children(c, lst)
lst=[]
get_children(Category.objects.prefetch_related('subcategories').get(pk=1), lst) # prefetch related is not working
如何在一次查询中获取所有 table?
您无法通过一次查询获取所有子项。您应该考虑对分层数据使用 django-mptt 应用程序。