It seems like I should be able to have just bar_id and have it automatically pass the lookup_expr down to a single method? But I don't see this as a possibility.
class FooFilter(filters.FilterSet):
bar_id = filters.CharFilter(method="filter_bar_id")
bar_id__in = filters.CharFilter(method="filter_bar_id__in")
# maybe some others later...
def filter_bar_id(self, queryset, name, value):
return queryset.filter(
Q(blah__bar=value) | Q(blech__bar=value)
)
def filter_bar_id__in(self, queryset, name, value):
bars = value.split(",")
return queryset.filter(
Q(blah__bar__in=bars) | Q(blech__bar__in=bars)
)