【问题标题】:Django filters - I want to sort the previous query and not the entire modelDjango 过滤器 - 我想对上一个查询进行排序,而不是对整个模型进行排序
【发布时间】: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


    【解决方案1】:

    Entry.objects.filter(value="Value").filter(another_value="Another value")

    【讨论】:

    • 您可以通过在过滤后的对象后面使用一个点来指定更多。
    【解决方案2】:

    我认为您正在寻找类似的东西。我打算把它作为评论留下,但我写信是为了回答,因为我的代表分数不够。

    https://www.youtube.com/watch?v=G-Rct7Na0UQ

    【讨论】:

      猜你喜欢
      • 2020-02-10
      • 2018-06-06
      • 2015-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-16
      • 2021-01-02
      • 2014-04-12
      相关资源
      最近更新 更多