Лучший способ сообщить пользователю, какие фильтры могут быть добавлены к конечной точке, - это создать документацию API с помощью Swagger или Redo c.
* 1006. * Чтобы клиенты знали, какие фильтры они могут добавить для конечной точки, вы отправляете им документацию, где они могут точно узнать, как ее можно использовать.
У вас есть другой конкретный вариант использования, для которого вы хотите отправить их в ответе?
Если вам необходимо обязательно отправить фильтры в теле, вы можете создать FilterMixin
и поместить его на все ViewSets
, где вы хотите использовать эту функцию, и перезаписать list
функция. Примером может быть что-то вроде этого:
class FiltersMixin:
def list(self, request, *args, **kwargs):
data = super().list(request, *args, **kwargs)
remaining_filters = list(set(self.filter_fields) - set(self.request.query_params.keys())
return {"filters": remaining_filters, **data}
Это работает, если фильтры в наборе добавлены в ViewSet
с использованием свойства filter_fields
.