I had a simple question on filtering in tastypie.
I want to filter with multiple values. For example:
/api/v1/message/?accountId=1,5,12
You'll have to build and apply a filter. Here's a small snippet, it's better to build the filter in build_filters, then apply it in apply_filters, but you'll get the idea
class Foo(ModelResource):
# regular stuff goes here...
def apply_filters(self, request, applicable_filters):
base_object_list = super(Foo, self).apply_filters(request, applicable_filters)
query = request.GET.get('query', None)
ids = request.GET.get('ids', None)
filters = {}
if ids:
ids = ids.replace('+', ' ').split(' ')
filters.update(dict(id__in=ids))
if query:
qset = (
Q(title__icontains=query, **filters) |
Q(description__icontains=query, **filters)
)
base_object_list = base_object_list.filter(qset).distinct()
return base_object_list.filter(**filters).distinct()