See object changes in post_save in django rest framework -


i curious if there way see has changed on object after saving using django rest framework. have special behavior need check if field has been changed original value hoping handle using post_save on generics.retrieveupdatedestroyapiview.

my first thought check using pre_save seems pre_save's object argument has changes applied it.

old answer django rest framework version 2.3.12:

to check if has changed on update, have compare unchanged model instance self.object changed model instance serializer.object.

the object argument passed pre_save method serializer.object not yet saved in database new changes.

the unchanged model instance self.object has been fetched database using self.get_object_or_none(). compare obj argument in pre_save method.

def pre_save(self,obj):     unchanged_instance = self.object     changed_instance = obj     ..... # comparison code 

new answer django rest framework 3.3:

pre_save , post_save no longer valid http://www.django-rest-framework.org/topics/3.0-announcement/#generic-views

now can place pre save or post save logic in perform_update method. example:

def perform_update(self, serializer):     old_obj = self.get_object()     new_data_dict = serializer.validated_data     # pre save logic     if old_obj.name != new_data_dict['name']         do_smething     .....     serializer.save()     # post save logic     ...... 

Comments

Popular posts from this blog

java - Intellij Synchronizing output directories .. -

git - Initial Commit: "fatal: could not create leading directories of ..." -