Django 按两个字段范围过滤

问题描述 投票:0回答:1

我有一个包含两个字段的模型:

min_age
max_age
。我需要使用 Django Filters 按两个字段的范围对其进行过滤。我怎样才能做到这一点?

# models.py

class AdvertisementModelMixin(models.Model):
    min_age = models.PositiveSmallIntegerField(
        blank=True,
        null=True,
        validators=[
            MaxValueValidator(80)
        ]
    )
    max_age = models.PositiveSmallIntegerField(
        blank=True,
        null=True,
        validators=[
            MaxValueValidator(80)
        ]
    )
python django django-filter django-filters
1个回答
0
投票

您可以使用以下方式创建自定义过滤器:

from django_filters import FilterSet, NumberFilter


class MyFilterSet(FilterSet):
    user_age = NumberFilter(field_name='user_age', method='filter_user_age')

    def filter_user_age(self, queryset, name, value):
        return queryset.objects.filter(min_age__lte=value, max_age__gte=value)
© www.soinside.com 2019 - 2024. All rights reserved.