我有一个这样的模型:
class MyModel(models.Model):
name = models.CharField(...)
parent = self.ForeignKey('self', null=True)
@property
def breadcrumb(self):
breadcrumb = self.name
if self.parent is not None:
breadcrumb = "%s > %s" % (self.parent.breadcrumb, breadcrumb)
return breadcrumb
我尝试使用 select_lated('parent') 添加自定义管理器,但显然,它只检索第一个父级,而不是整个链(我需要检索长度在 1 和...之间的面包屑)用户会想要/需要)。有什么建议吗?
最佳答案
免责声明:未经测试的代码。
def breadcrumb(self):
breadcrumb = self.name
def get_next_parent(obj=None):
if obj is None:
return None
if obj.parent:
return obj.parent
return None
obj = self
while get_next_parent(obj=obj):
obj = get_next_parent(obj=obj)
breadcrumb = '%s > %s' % (obj.name, breadcrumb)
return breadcrumb
关于python - 在自身上选择_相关()以获取面包屑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32506389/