gracefully display filters

This commit is contained in:
Corban-Lee Jones 2024-07-24 22:50:04 +01:00
parent 0e22dcac4c
commit aafbedb08a

View File

@ -1,6 +1,12 @@
from rest_framework import serializers
from logging import getLogger
from rest_framework import serializers, fields
from rest_framework.metadata import SimpleMetadata
from rest_framework.request import clone_request
from django.utils.encoding import force_str
log = getLogger(__name__)
class ExpandedMetadata(SimpleMetadata):
@ -11,6 +17,9 @@ class ExpandedMetadata(SimpleMetadata):
if hasattr(view, "ordering_fields"):
metadata["sort"] = view.ordering_fields
if hasattr(view, "filterset_fields"):
metadata["filter"] = view.filterset_fields
return metadata
def determine_actions(self, request, view):
@ -39,3 +48,13 @@ class ExpandedMetadata(SimpleMetadata):
view.request = request
return actions
def get_field_info(self, field):
field_info = super().get_field_info(field)
if hasattr(field, 'default') and field.default is not fields.empty:
field_info['default'] = field.default
if hasattr(field, 'initial') and field.initial is not fields.empty:
field_info['initial'] = field.initial
return field_info