I'm using the Django's default user and a REST API endpoint to list users filtered by query parameters. It looks like this:
# serializers.py
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
# views.py
class UserFilter(django_filters.FilterSet):
class Meta:
model = User
class UserList(generics.ListAPIView):
model = User
serializer_class = UserSerializer
filter_class = UserFilter
This works good as long as I provide User
's field name in query parameter. So, if I want to filter users based on username, I would use /users/?username=johndoe
. But what if I want to map a query parameter which is not a field in User model? Let's say, I have a query param called nickname
and I want to use it to filter on first_name
field?
Using URLConf
and named group might be a solution but if I do it for 15 fields then it'll be very long.
What's the better way?
You can add
nickname
to your FilterSet pointing to actual field on the model.