          instance = super(MySerializer).save(*args, **kwarg)
          send_email(instance.to_email, instance.message)
  		return instance
  
  Alternatively write your view logic exlpicitly, or tie your pre/post save behavior into the model class or model manager.
  
  #### Removal of view attributes.
  
  The `.object` and `.object_list` attributes are no longer set on the view instance. Treating views as mutable object instances that store state during the processing of the view tends to be poor design, and can lead to obscure flow logic.
  
 
</s> remove 		return instance
 </s> add  </s> remove     def save(self, *args, **kwargs):
        instance = super(MySerializer).save(*args, **kwarg)
 </s> add For example:

    def perform_create(self, serializer):
        # Include the owner attribute directly, rather than from request data.
        instance = serializer.save(owner=self.request.user)
        # Perform a custom post-save action. </s> remove #### Removal of pre/post save hooks. 
 </s> add #### Changes to pre/post save hooks.  </s> remove The following method hooks no longer exist on the new, simplified, generic views: `pre_save`, `post_save`, `pre_delete`, `post_delete`.
 </s> add The `pre_save` and `post_save` hooks no longer exist, but are replaced with `perform_create(self, serializer)` and `perform_update(self, serializer)`. </s> remove If you do need custom behavior, you might choose to instead override the `.save()` method on your serializer class. For example:
 </s> add These method should save the object instance by calling `serializer.save()`, adding in any explicit additional arguments as required. They may also perform any custom pre-save or post-save behavior.
The `pre_delete` and `post_delete` hooks no longer exist, and are replaced with `.perform_destroy(self, instance)`, which should delete the instance and perform any custom actions.

    def perform_destroy(self, instance):
        # Perform a custom pre-delete action.
        send_deletion_alert(user=instance.created_by, deleted=instance)
        # Delete the object instance.
        instance.delete()
          instance = super(MySerializer).save(*args, **kwarg)
          send_email(instance.to_email, instance.message)
  		return instance
  
The `pre_delete` and `post_delete` hooks no longer exist, and are replaced with `.perform_destroy(self, instance)`, which should delete the instance and perform any custom actions.

    def perform_destroy(self, instance):
        # Perform a custom pre-delete action.
        send_deletion_alert(user=instance.created_by, deleted=instance)
        # Delete the object instance.
        instance.delete()
  
  #### Removal of view attributes.
  
  The `.object` and `.object_list` attributes are no longer set on the view instance. Treating views as mutable object instances that store state during the processing of the view tends to be poor design, and can lead to obscure flow logic.
  
keep keep keep keep replace keep keep keep keep keep
 Tweak pre/post save hooks. Return instance in .update(). 
docs/topics/3.0-announcement.md