Django сортировать dict после запроса

Иметь таблицу с веб-сайтами и таблицу "многие-к-одному" с описаниями, пытаясь получить список, сначала получая самые последние описания, а затем отображая их в порядке содержания описаний...

иметь следующее в views.py

def category(request, category_name_slug):
    """Category Page"""
    context_dict = {}

    try:
        category = Category.objects.get(slug=category_name_slug)
        subcategory = SubCategory.objects.filter(category=category)
        websites = Website.objects.filter(sub_categories=subcategory,     online=True, banned=False)
        sites = websites
        descriptions =     WebsiteDescription.objects.prefetch_related("about")
        descriptions = descriptions.filter(about__in=sites)
        descriptions = descriptions.order_by('about', '-updated')
        descs = []
        last_site = "" # The latest site selected
        # Select the first (the latest) from each site group
        for desc in descriptions:
            if last_site != desc.about.id:
                last_site = desc.about.id
                desc.url = desc.about.url
                desc.hs_id = desc.about.id
                desc.banned = desc.about.banned
                desc.referral = desc.about.referral
                descs.append(desc)
        context_dict['descs'] = descs
        context_dict['websites'] = websites
        context_dict['subcategory'] = subcategory
        context_dict['category'] = category
    except SubCategory.DoesNotExist:
        pass

    return render(request, 'category.html', context_dict)

это дает мне список с сайтами и их последними описаниями, поэтому у меня есть следующее в category.html

        {% if category %}
        <h1>{{ category.name }}</h1>

{% for subcategory in category.subcategory_set.all %}

             <a href="/links/{{ category.slug }}/{{ subcategory.slug     }}">{{ subcategory.name }}  ({{ subcategory.website_set.all|length }}) </a>

        {% endfor %}

            {% if descs %}
{% load endless %}

{% paginate descs %}
                {% for desc in     descs|dictsortreversed:"description"|dictsortreversed:"officialInfo" %}

                        <ul id='list' class='linksteps'>

        <a href="/{{ desc.about_id }}" rel="nofollow" target="_blank">
        <img src="/static/screenshots/{{ desc.about_id }}.png" />
        </a>

                <li><h3><a href="/{{ desc.about_id }}" rel="nofollow"     target="_blank">{{ desc.about_id }}</a>{% if desc.title %} - {{ desc.title }}     {% endif %}</h3>


          {% if desc.description %}<b>Description: </b>{{     desc.description }}
          <br />{% endif %} {% if desc.subject %}<b>Keywords: </b>{{     desc.subject }}
          <br />{% endif %} {% if desc.type %}<b>Type: </b>{{ desc.type }}
          <br />{% endif %} {% if desc.officialInfo %} {% if     desc.language %}<b>Language: </b>{{ desc.language }}
          <br />{% endif %} {% if desc.contactInformation %}<b>Contact     info: </b>{{ desc.contactInformation }}
          <br />{% endif %}


          {% else %}
          {% endif %}
        </li>


                       </ul>
</div>

                {% endfor %}
 {% show_pages %}
            {% else %}
                <strong>No websites currently in category.</strong>
            {% endif %}
        {% else %}
            The specified subcategory {{ category_name }} does not exist!
        {% endif %}

Первоначально я использовал dictsort

{% for desc in descs|dictsortreversed:"description"|dictsortreversed:"officialInfo"|dictsortreversed:"referral" %}

чтобы дать мне список в нужном порядке, так что я был все счастлив;) Тогда, однако, я решил, что мне нужно немного нумерации страниц, потому что списки стали слишком длинными. django-endless-pagination работает отлично и выполняет то, что предполагалось, однако разделяет мой список до того, как включается диктаторская сортировка.

Есть ли способ сортировки, прежде чем произойдет разбиение на страницы и после того, как я упорядочил_by в начальном запросе, чтобы выбрать последние описания?

Весьма признателен

РЕДАКТИРОВАТЬ:

не получаю никаких ответов, поэтому мой вопрос может быть неясным.

насколько я понимаю, мне нужно отсортировать значения в context_dict в конце файла views.py, заменив dictsort как в шаблоне

РЕШИТЬ:::

это помогло мне заменить диктофон.

descs1 = sorted(descs, key=operator.attrgetter('referral', 'officialInfo', 'description'), reverse=True)
context_dict['descs'] = descs1

1 ответ

Решение

РЕШИТЬ:::

это помогло мне заменить диктофон.

descs1 = sorted(descs, key=operator.attrgetter('referral', 'officialInfo', 'description'), reverse=True)
context_dict['descs'] = descs1
Другие вопросы по тегам