Django mptt并合并多个对象

时间:2012-07-22 20:25:09

标签: django traversal django-mptt

我正在使用django-mptt而且我被卡住了。

我希望获得每个类别的所有对象以及来自后代类别的所有对象。

我设法实现了我的目标,但有一个问题 - 我无法对项目进行排序,因为它们是从多个对象生成的。

我认为我的方法很糟糕。

我如何实现目标,并且可以将所有返回的对象组合在一起并按日期排序?

查看:

 def category_view(request, pk, slug, sub_pk=None, subcategory=None):

    if not subcategory:
        current_category = get_object_or_404(Category, pk=int(pk))
        adv_obj = current_category.get_descendants(include_self=True)
        print adv_obj

    else:
        current_category = get_object_or_404(Category, pk=int(sub_pk))
        adv_obj = current_category.get_descendants(include_self=True)


    return TemplateResponse(request, "category_view.html", {'category_details':current_category,
                                                            'advert': adv_obj,
                                                           },
                            )

模板:

{% block content %}
<div class="grid_8">
    <h2>{{category_details.name}}</h2>
    <hr>
    <div>
        {% for n in advert.all %}
        {% for p in n.advert_set.all %}

        <div>
            <h3>{{p.title}}</h3>
            <span class="annoucement_detail">Kategoria: </span><a href="{{n.category.get_absolute_url}}">{{p.category.name}}</a>
            {% if p.location %} | <span class="annoucement_detail">Miejscowość: </span>{{p.location}}
            {% endif %}
            <div>
                <span class="annoucement_detail">Data dodania: </span> {{p.date_added}} | <span class="annoucement_detail">Data wygaśnięcia: </span>{{p.expiration_date}}
            </div>
            <div>
                {{p.text}}
            </div>
        </div>
        <hr>
        {% endfor %}
        {% endfor %}
    </div>

</div>
{% endblock%}

编辑:

我想出了一个主意。我将在视图中迭代结果并使用itertools链接它。 明天我会检查它是否会起作用:)

1 个答案:

答案 0 :(得分:1)

这是我的答案:)