code: def _attach_objects_post_save_hook(self, cls, data, pending_relations=None):
  		
  
  		unprocessed_pending_relations = []
  		if pending_relations is not None:
  			for post_save_relation in pending_relations:
  				object_id, field, id_ = post_save_relation
  
  				if self.id == id_:
  					# the target instance now exists
  					target = field.model.objects.get(id=object_id)
  					setattr(target, field.name, self)
  					target.save()
  
  					if django.VERSION < (2, 1):
  						# refresh_from_db doesn't clear related objects cache on django<2.1
  						# instead manually clear the instance cache so refresh_from_db will reload it
  						for field in self._meta.concrete_fields:
  							if field.is_relation and field.is_cached(self):
  								field.delete_cached_value(self)
  
  					# reload so that indirect relations back to this object - eg self.charge.invoice = self are set
  					# TODO - reverse the field reference here to avoid hitting the DB?
  					self.refresh_from_db()
  				else:
  					unprocessed_pending_relations.append(post_save_relation)
  
  			if len(pending_relations) != len(unprocessed_pending_relations):
  				# replace in place so passed in list is updated in calling method
  				pending_relations[:] = unprocessed_pending_relations
docs: Gets called by this object's create and sync methods just after save.
  		Use this to populate fields after the model is saved.
  
  		:param cls: The target class for the instantiated object.
  		:param data: The data dictionary received from the Stripe API.
  		:type data: dict