[Django]-Pass all fields of model in django filter backend

3πŸ‘

βœ…

I dont think it’s wise to do it, as some fields can reveal sensitive information, but you can try to pass all fields from the model:

class UserListView(generics.ListAPIView):
    queryset = User.objects.all()
    serializer_class = UserSerializer
    filter_backends = (filters.SearchFilter,)
    search_fields = [f.name for f in User._meta.get_fields()]

Here are the docs for using get_fields:

Options.get_fields(include_parents=True, include_hidden=False)[source]

Returns a tuple of fields associated with a model. get_fields()
accepts two parameters that can be used to control which fields are
returned:

  • include_parents
    True by default. Recursively includes fields defined on parent
    classes. If set to False, get_fields() will only search for fields
    declared directly on the current model. Fields from models that directly
    inherit from abstract models or proxy classes are considered to be
    local, not on the parent.
  • include_hidden
    False by default. If set to True, get_fields() will
    include fields that are used to back other field’s functionality. This
    will also include any fields that have a related_name (such as
    ManyToManyField, or ForeignKey) that start with a β€œ+”.
πŸ‘€yedpodtrzitko

0πŸ‘

https://docs.djangoproject.com/en/1.10/ref/models/meta/

class UserListView(generics.ListAPIView):
    queryset = User.objects.all()
    serializer_class = UserSerializer
    filter_backends = (filters.SearchFilter,)
    search_fields = [field.name for field in User._meta.fields]  
πŸ‘€Wilfried

Leave a comment