【发布时间】:2021-04-01 08:29:06
【问题描述】:
例如,当我按城市过滤表格时,它可以工作;
但如果我想使用多项选择菜单按日期或价格排序,django-filter 会按所选值对整个模型进行排序,而不仅仅是城市。
我该如何解决这个问题?
import django_filters
from django_filters import DateFilter
from .models import ModelName
class SortFilter(django_filters.FilterSet):
SORT_BY_DATE_AND_PRICE = (
('date_asc', 'Date ascending'),
('date_desc', 'Date descending'),
('price_asc', 'Price ascending'),
('price_desc', 'Price descending')
)
sort = django_filters.ChoiceFilter(label='Order by:', choices=SORT_BY_DATE_AND_PRICE, method='filter_by_date_and_price')
class Meta:
model = ModelName
fields = ['city', 'destination']
def filter_by_date_and_price(self, queryset, name, value):
if value == 'date_asc':
sort = 'date'
elif value == 'date_desc':
sort = '-date'
elif value == 'price_asc':
sort = 'price'
elif value == 'pret_desc':
sort = '-price'
return queryset.order_by(sort)
【问题讨论】:
标签: python django django-rest-framework django-views django-templates