serializer.py 674 B

1234567891011121314151617181920
  1. from django.core.serializers.python import Serializer as BaseSerializer
  2. class Serializer(BaseSerializer):
  3. def end_object(self, obj):
  4. fields = self.selected_fields
  5. if fields is not None:
  6. missing = set(fields).difference(self._current.keys())
  7. if missing:
  8. _nothing = object()
  9. for f in missing:
  10. fs = f.split('__')
  11. value = obj
  12. while fs:
  13. value = getattr(value, fs.pop(0), _nothing)
  14. if value is not _nothing:
  15. self._current[f] = value
  16. return super().end_object(obj)