Pastebin

Paste #25046: No description

< previous paste - next paste>

Pasted by Anonymous Coward

Download View as text

### VIEW:
class DealListView(ListView):
    model = Deal
    paginate_by = 50

    def get_queryset(self):
        queryset = super().get_queryset()
        sort_by = self.request.GET.get('sort_by', 'title')
        if sort_by.startswith('-'):
            queryset = queryset.order_by(sort_by)
        else:
            queryset = queryset.order_by(sort_by).reverse()
        if sort_by == 'created_on':
            queryset = queryset.order_by('-created_on')
        return queryset

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        sort_by = self.request.GET.get('sort_by', 'title')
        context['sort_by'] = sort_by
        context['sort_title_asc'] = '?sort_by=title'
        context['sort_title_desc'] = '?sort_by=-title'
        context['sort_created_on_asc'] = '?sort_by=created_on'
        context['sort_created_on_desc'] = '?sort_by=-created_on'
        return context


### TEMPLATE:

            <th>
                <a href="{% if sort_by in 'title' and sort_title_asc %}{% url request.resolver_match.url_name %}{{ sort_title_desc }}
                    {% else %}{% url request.resolver_match.url_name %}{{ sort_title_asc }}
                    {% endif %}">
                    Deal
                    {% if sort_by in '-title' and sort_title_asc %}
                        {% if sort_title_asc == request.path_info %}
                            &#x25B2;
                        {% else %}
                            &#x25BC;
                        {% endif %}
                    {% endif %}
                </a>
            </th>


New Paste


Do not write anything in this field if you're a human.

Go to most recent paste.