Django过滤多个URL参数

Eimantas

我正在使用Django过滤器应用在我的网站上构建搜索。这是代码:

class PropertyFilter(django_filters.FilterSet):
city = django_filters.ModelMultipleChoiceFilter(queryset=City.objects.all(), widget = CheckboxSelectMultiple)
trade_type = django_filters.ModelMultipleChoiceFilter(queryset=Trade.objects.all(), widget = CheckboxSelectMultiple)

class Meta:
    model = Property
    fields = ['city', 'trade_type']

问题在于,当用户标记两个城市时,Django过滤器仅通过最后一个URL参数(此案例中的城市2)过滤对象:

http://example.org/lt/list/city=1&city=2

Models.py

class City(models.Model):
    name = models.CharField(max_length=250, verbose_name=_('Name'))

也许我做错了什么?

朋克摇滚

您可以创建查询字符串的复数形式,并接受列表作为过滤器参数:

http://example.org/lt/list/?cities=1,2


class CustomFilterList(django_filters.Filter):
    def filter(self, qs, value):
        if value not in (None, ''):
            values = [v for v in value.split(',')]
            return qs.filter(**{'%s__%s' % (self.name, self.lookup_type): values})
        return qs

class PropertyFilter(django_filters.FilterSet):
    city = django_filters.ModelMultipleChoiceFilter(queryset=City.objects.all(), widget = CheckboxSelectMultiple)
    trade_type = django_filters.ModelMultipleChoiceFilter(queryset=Trade.objects.all(), widget = CheckboxSelectMultiple)
    cities = CustomFilterList(name="city", lookup_type="in")

    class Meta:
        model = Property
        fields = ['cities', 'city', 'trade_type']

查看此答案以正确过滤值列表:

可以通过django-filter URL解析器来执行in`lookup_type吗?

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Django过滤多个URL参数

来自分类Dev

Django:过滤多个参数

来自分类Dev

在带有多个参数的Django中过滤查询

来自分类Dev

PowerShell过滤多个参数

来自分类Dev

PowerShell过滤多个参数

来自分类Dev

Django Rest查询集通过url参数过滤

来自分类Dev

Django过滤器,其中多个参数与多个集合之一匹配

来自分类Dev

django-rest-framework如何处理多个URL参数?

来自分类Dev

如何在Django中传递多个URL参数

来自分类Dev

在Django中发送URL中的多个参数作为GET请求?

来自分类Dev

如何在Django中将多个参数传递给URL

来自分类Dev

如何在Django中传递多个可选的URL参数?

来自分类Dev

Django url匹配错误模式的多个参数

来自分类Dev

Django在request.GET中捕获多个URL参数

来自分类Dev

如何以各种模式为 django 的 url 提供多个参数

来自分类Dev

URL 中的多个参数

来自分类Dev

Django动态过滤的ListView返回错误:get()为参数'self'获得了多个值

来自分类Dev

基于可选参数的Django过滤

来自分类Dev

如何使用使用多个参数的 url-pattern 在 django 中创建唯一的 url?

来自分类Dev

细枝过滤器多个参数

来自分类Dev

细枝过滤器多个参数

来自分类Dev

JPA Spring存储库过滤多个参数

来自分类Dev

具有多个参数的JavaScript过滤

来自分类Dev

多个过滤器参数dplyr

来自分类Dev

使用LINQ基于多个参数进行过滤?

来自分类Dev

使用多个参数过滤 JSON 对象

来自分类Dev

Unicode Django URL参数

来自分类Dev

Django URL参数传递

来自分类Dev

Django,查看 url 参数