hi, thanks a lot for your clarification i have tried it in models.py ,overriding parent save method and everything works fine
On Feb 17, 11:56 am, Malcolm Tredinnick <malc...@pointy-stick.com> wrote: > On Mon, 2009-02-16 at 22:38 -0800, gganesh wrote: > > hi, > > i wrote > > def after_save(sender,instance,created,**kaw): > > instance.acct_number ='RBSB' + str(instance.id) > > instance.save() > > >post_save.connect(after_save,sender=Selector) > > > once when i save it gives out error like > > "maximum recursion depth exceeded in cmp "Exception > > That's not surprising. When you see that error, it's usually a hint that > you've got an infinite loop (the other possibility is that you're doing > a really complex computation, but that's relatively rare, particularly > in web programming), so start looking for what it can be. In this case, > > (1) Something calls Selector.save() > (2) save() finished andpost_savesignal handler is called. > (3) your signal handler calls Selector.save() again > (4) save() calls thepost_savesignal handler (again) > (5) Go back to step 3, repeat forever. > > You're going to have to build something into your signal handler to > detect the loop. One idea might be to add an attribute indicating that > you are already updating it: > > def after_save(sender,instance,created,**kaw): > if hasattr(instance, '_already_saving): > del instance._already_saving > return > instance._already_saving = True > instance.acct_number ='RBSB' + str(instance.id) > instance.save() > > However, in this particular case, it seems like using apost_savesignal > handler might be overkill. Can you override the Selector.save() method > instead? > > Signals are useful, generally, when you want to do something to multiple > models. In this case, the behaviour seems very specific to one > particular model, so just doing it in the model's save method seems more > sensible. > > The one exception to this guideline is if you don't "own" the Selector > source -- if it's a third-party model -- and so can't modify the save() > method. In that case, apost_savehandler can be a way to add new > behaviour. But that's more of a last resort situation. > > Regards, > Malcolm --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@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 -~----------~----~----~----~------~----~------~--~---