python - 在自身上选择_相关()以获取面包屑

标签 python django django-models

我有一个这样的模型:

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/

相关文章:

Python - 使用具有多个参数的多处理不起作用

python - 如何使用 DRF 的 ModelSerializer 创建一个 django 用户

python - 更快的 For 循环来操作 Pandas 中的数据

python - 使用 Pandas 将多行转换为单行

python - 特定区域的 Foursquare field

python - 我如何从外部 API 填充 Django 模型?

django-models - Django 模型中的一次性字段

python - Django - 在模型中加载大默认值的正确方法

python - 可以在 sympy 中为符号添加描述吗?

Django,运行 'test' 返回我的命令文件的路径