【问题标题】:MPTT multiple parents breadcrumbsMPTT 多父母面包屑
【发布时间】:2016-07-21 07:43:45
【问题描述】:

假设我有一个简单的模型集:

class Category(MPTTModel):
    name = CharField(max_length=50)
    parent = TreeForeignKey(
        'self',
        null=True,
        blank=True,
        related_name='children',
        db_index=True
    )

class Record(Model):
    name = CharField(max_length=50)
    category = TreeManyToManyField(SectionArt)

假设我有一个属于 3 个不同类别的 Record。如何让面包屑跟踪我从哪个类别打开我的记录?

【问题讨论】:

    标签: django breadcrumbs django-mptt


    【解决方案1】:

    您可以使用request.META['HTTP_REFERER']跟踪用户来自哪里

    views.py

    ​​>
    def get_context_data(self, **kwargs):
        c = super(RecordDetail, self).get_context_data(**kwargs)
        if 'HTTP_REFERER' in self.request.META:
            referer = self.request.META['HTTP_REFERER'].split('/')[-2]
            c['categories'] = [models.Category.objects.get(slug=referer)]
        else:
            c['categories'] = self.object.categories.all()
        return c
    

    模板.html

    <ul class="breadcrumbs">
        <li><a href="{{ sections.home.get_absolute_url }}">{{ sections.home.title }}</a></li>
        {% if categories %}
            {% with category=categories.0 %}
                {% for obj in category.get_ancestors %}
                    <li><a href="{{ obj.get_absolute_url }}">{{ obj.title }}</a></li>
                {% endfor %}
                <li><a href="{{ category.get_absolute_url }}">{{ category.title }}</a></li>
            {% endwith %}
        {% endif %}
        <li class="current">{{ object.short_title }}</li>
    </ul>
    

    Source

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多