相关疑难解决方法(0)

DjangoFilterBackend有多个ID

我想用django-filter过滤我的模型.如果我按一个id过滤它可以正常工作:

http://localhost:8000/accommodations?accommodationType_id=1
Run Code Online (Sandbox Code Playgroud)

但我不知道如何通过多个ID来过滤.

http://localhost:8000/accommodations?accommodationType_id=1,2
Run Code Online (Sandbox Code Playgroud)

我的实际ViewSet看起来像这样:

class AccommodationViewSet(viewsets.ReadOnlyModelViewSet):
    """
        REST API endpoint for 'accommodation' resource
    """
    queryset = Accommodation.objects.all()
    serializer_class = AccommodationSerializer
    filter_backends = (filters.DjangoFilterBackend,)
    filter_fields = ('accommodationType_id', 'name')
Run Code Online (Sandbox Code Playgroud)

我希望有一个解决方案.

django django-filter django-rest-framework

11
推荐指数
3
解决办法
2820
查看次数

Django过滤多个URL参数

我正在使用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']
Run Code Online (Sandbox Code Playgroud)

问题在于,当用户标记两个城市时,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'))
Run Code Online (Sandbox Code Playgroud)

也许我做错了什么?

python django django-filter

6
推荐指数
1
解决办法
6225
查看次数