Lookup

There is the Lookup dataclass for defining lookup configurations. To customize lookups you should define lookups dictionary in the serializer’s Meta class.

Valid parameters:

  • serializer: A custom serializer for options.

  • filterset: If you need a custom filter, for example, if you have a modal on the frontend with an object list and filters, you can define a custom filterset.

  • search_fields: Every lookup has a search filter by default. If it is a queryset field, you can define the model’s fields to be used for search, or alternatively, you can define it as a property in the model.

  • pagination_class: A pagination class, or None if you don’t need it.

Example:

from drf_lookup import Lookup
from rest_framework import serializers


class LookupCategorySerializer(serializers.Serializer):
    id = serializers.ReadOnlyField(source='pk')
    name = serializers.ReadOnlyField(source='__str__')
    is_public = serializers.BooleanField()


class ArticleSerializer(serializers.ModelSerializer):
    class Meta:
        model = Article
        fields = ('id', 'title', 'category')
        lookups = {
            'category': Lookup(serializer=LookupCategorySerializer),
        }