我正在试图获取当前页面的所有兄弟页面。 Page
模型如下:
class Page(MPTTModel):
title = models.CharField(max_length=255)
slug = models.SlugField(max_length=255, blank=True) # changing to CharField from SlugField
markdown = models.TextField()
parent = TreeForeignKey('self', on_delete=models.CASCADE, null=True,
blank=True, related_name='children')
获取所有兄弟页面的代码如下:
pages = page.get_siblings(include_self=True)
上述代码的问题在于每个页面都会命中数据库。如果有50个页面,那么将导致50次查询。
我尝试使用select_related()解决这个问题,但没有成功。以下是我的尝试结果。
pages = page.get_siblings(include_self=True).select_related()
# this too doesn't work
pages = page.get_siblings(include_self=True).select_related('parent')
在寻找解决方案时,我偶然发现了这个页面。该页面显示,可以使用select_related()
调用get_siblings()
。
我做错了什么?
get_absolute_url()
方法。它被调用了每一页。我通过添加一个列来存储 URL 来解决了这个问题。就这样。我应该关闭这个问题吗? - Cody