Advertisement
a_igin

Untitled

Jun 21st, 2020
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.03 KB | None | 0 0
  1. from rest_framework import serializers
  2. from rest_framework.relations import MANY_RELATION_KWARGS
  3.  
  4.  
  5. class CustomManyRelatedField(serializers.ManyRelatedField):
  6. def to_internal_value(self, data):
  7. if isinstance(data, str) or not hasattr(data, '__iter__'):
  8. self.fail('not_a_list', input_type=type(data).__name__)
  9. if not self.allow_empty and len(data) == 0:
  10. self.fail('empty')
  11. if data == ['']:
  12. data = []
  13. return [
  14. self.child_relation.to_internal_value(item)
  15. for item in data
  16. ]
  17.  
  18.  
  19. class PrimaryKeyM2MField(serializers.PrimaryKeyRelatedField):
  20.  
  21. @classmethod
  22. def many_init(cls, *args, **kwargs):
  23. list_kwargs = {'child_relation': cls(*args, **kwargs)}
  24. for key in kwargs:
  25. if key in MANY_RELATION_KWARGS:
  26. list_kwargs[key] = kwargs[key]
  27. return CustomManyRelatedField(**list_kwargs)
  28.  
  29. def to_representation(self, value):
  30. return super().to_representation(value)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement