使用django-filter按升序和降序排序

时间:2019-01-26 12:11:48

标签: django django-filter

我有以下代码用于一些过滤:

from .models import ProductLaptop
import django_filters

class ProductLaptopFilter(django_filters.FilterSet):
    laptops_name = django_filters.CharFilter(lookup_expr='icontains')
    laptops_price = django_filters.NumberFilter()
    laptops_price__gt = django_filters.NumberFilter(field_name='laptops_price', lookup_expr='gt')
    laptops_price__lt = django_filters.NumberFilter(field_name='laptops_price', lookup_expr='lt')


    class Meta:
        model = ProductLaptop
        fields = ['laptops_name', 'laptops_price', 'brand_name']

为此的html代码:

{% load widget_tweaks %}

{% block content %}
  <form method="get">
    <div class="well">
      <h4 style="margin-top: 0">Filter</h4>
      <div class="row">
        <div class="form-group col-sm-4 col-md-3">
          {{ filter.form.laptops_name.label_tag }}
          {% render_field filter.form.laptops_name class="form-control" %}
        </div>
        <div class="form-group col-sm-4 col-md-3">
          {{ filter.form.laptops_price.label_tag }}
          {% render_field filter.form.laptops_price class="form-control" %}
        </div>
        <div class="form-group col-sm-4 col-md-3">
          {{ filter.form.brand_name.label_tag }}
          {% render_field filter.form.brand_name class="form-control" %}
        </div>
        <div class="form-group col-sm-4 col-md-3">
          {{ filter.form.laptops_price__gt.label_tag }}
          {% render_field filter.form.laptops_price__gt class="form-control" %}
        </div>
      <div class="form-group col-sm-4 col-md-3">
          {{ filter.form.laptops_price__lt.label_tag }}
          {% render_field filter.form.laptops_price__lt class="form-control" %}
        </div>

      </div>
      <button type="submit" class="btn btn-primary">
        <span class="glyphicon glyphicon-search"></span> Search
      </button>
    </div>
  </form>

这给了我如下视图: enter image description here

在这里,我想添加一个选项,使人们可以按升序和降序对项目进行排序。 谁能给我一些建议我该如何实施?

1 个答案:

答案 0 :(得分:1)

为此,您可以使用django-filter中的OrderingFilter。在您的FilterSet类中创建此过滤器,并提供所有应启用的订购字段。

相关问题