There are a couple ways to do this.  You can either override the model
methods like save and init, or you can use signals and tie into the
pre_save, post_save, etc. Signals are here:
http://docs.djangoproject.com/en/dev/ref/signals/

If using signals, you will have an instance of the object being saved.
Im sure there are better ways to do it, but i'd probably use the
instance variable and do a query for the original. So query for the
sender where pk=instance.pk, and compare it to the instance being
saved. Again, seems sloppy to me, im sure theres a better way.

If you're overriding the model save, you can create a copy of what you
want to compare in the init function. I just did this the other day.
For example, i wanted to check for a different title. Look at my
overridden __init__ and my overridden save and see how I copied the
title to a new variable for comparison.

class Entry(models.Model):
        title = models.CharField(max_length=255)
        slug = models.SlugField(max_length=255)
        body = models.TextField()
        user = models.ForeignKey(User)
        created = models.DateTimeField(auto_now_add=True)

        def __init__(self, *args, **kwargs):
                super(Entry, self).__init__(*args, **kwargs)
                #set current title to check for title change on save
                self.current_title = self.title

        def save(self, *args, **kwargs):
                if self.pk: #this save is an update, not a create
                        if self.title != self.current_title: #new title?
                                #new title, update slug
                                self.slug = self.create_unique_slug()
                else:
                        #created new entry, generate slug
                        self.slug = self.create_unique_slug()
                super(Entry, self).save(*args, **kwargs)



On Apr 26, 8:33 am, Derek <gamesb...@gmail.com> wrote:
> The Django docs point to the "hooks" you can use for custom code when
> saving/deleting objects in the Django 
> adminhttp://www.djangoproject.com/documentation/models/save_delete_hooks/
>
> What is not clear is how (or rather, where) to create a copy of an object
> before editing, so that it can be compared to the "revised" version altered
> by the user and appropriate code be executed.
>
> How and where can this be done?
>
> Thanks
> Derek
>
> --
> You received this message because you are subscribed to the Google Groups 
> "Django users" group.
> To post to this group, send email to django-us...@googlegroups.com.
> To unsubscribe from this group, send email to 
> django-users+unsubscr...@googlegroups.com.
> For more options, visit this group 
> athttp://groups.google.com/group/django-users?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to