diff --git a/apps/api/metadata.py b/apps/api/metadata.py index 9f69b80..114b0d9 100644 --- a/apps/api/metadata.py +++ b/apps/api/metadata.py @@ -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