Django过滤多个具有相同选择的字段

时间:2018-04-09 09:54:06

标签: django django-filters

我的模型看起来像这样:

field_1 = models.IntegerField(choices=FIELD_CHOICES, blank=True, null=True)
field_2 = models.IntegerField(choices=FIELD_CHOICES, blank=True, null=True)

我想用django_filters创建一个过滤器,将这两个单独的字段组合成一个单独的ChoiceFilter。我怎么能这样做?

1 个答案:

答案 0 :(得分:2)

您可以指定用于过滤自定义字段的方法:

class YouFilter(FilterSet):
    new_field = ChoiceFilter(method='filter_new_field', choices=FIELD_CHOICES)

    class Meta:
        model = User
        fields = ('username', 'first_name', 'last_name', 'new_field')

    def filter_new_field(self, queryset, name, value):
        return queryset.filter(
            field_1=value,
            field_1=value
        )