metadata.py 771 B

12345678910111213141516171819
  1. from rest_framework.metadata import SimpleMetadata
  2. from django.utils.encoding import force_str
  3. from utilities.api import ContentTypeField
  4. class ContentTypeMetadata(SimpleMetadata):
  5. def get_field_info(self, field):
  6. field_info = super().get_field_info(field)
  7. if hasattr(field, 'queryset') and not field_info.get('read_only') and isinstance(field, ContentTypeField):
  8. field_info['choices'] = [
  9. {
  10. 'value': choice_value,
  11. 'display_name': force_str(choice_name, strings_only=True)
  12. }
  13. for choice_value, choice_name in field.choices.items()
  14. ]
  15. field_info['choices'].sort(key=lambda item: item['display_name'])
  16. return field_info