我有一个包含两个字段的模型:
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)
]
)
您可以使用以下方式创建自定义过滤器:
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)