• Как добавить фильтрацию и сортировку в function-based views?

    def order_qs(request, qs):
        order = request.GET.get('order')
        sort = request.GET.get('sort')
        if order == 'ASC':
            return qs.order_by(sort)
        elif order == 'DESC':
            return qs.order_by('-' + sort)
        else:
            return qs
    
    
    def construct_page(request, qs):
        """ Builds the list-view with pagination """
        limit = request.GET.get('limit', 10)
        page_num = request.GET.get('page')
        paginator = Paginator(order_qs(request, qs), limit)
        try:
            page = paginator.page(page_num)
        except PageNotAnInteger:
            page = paginator.page(1)
        except EmptyPage:
            page = paginator.page(paginator.num_pages)
        return page


    views.py:
    def category_detail_view(request, cat_slug=None):
        category = get_object_or_404(Category, slug=cat_slug)
        ctx = {}
        ctx['category'] = category
        ctx['products'] = construct_page(request, Product.objects.filter(category=category))
        return render(request, 'main/category_detail.html', ctx)


    Фильтрацию по такому же принципу
    Ответ написан
    Комментировать
  • Как правильно построить словарь python для google charts?

    Вместо:
    for x in link
    Используйте это:
    for x in link.items()
    Ответ написан
    Комментировать
  • Как вывести изображения в шаблоне?

    @Oskin1 Автор вопроса
    Наконец, нашёл решение проблемы - не использовать вложение папки media в static
    было так:
    STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
    STATIC_URL = '/static/'
    
    MEDIA_ROOT = os.path.join(BASE_DIR, 'static/media/')
    MEDIA_URL = '/static/media/'


    А надо так:
    STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
    STATIC_URL = '/static/'
    
    MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
    MEDIA_URL = '/media/'
    Ответ написан
    Комментировать