Modifying Django's pre_save/post_save Data
Posted
by
Rodrogo
on Stack Overflow
See other posts from Stack Overflow
or by Rodrogo
Published on 2010-12-26T20:04:51Z
Indexed on
2010/12/26
20:54 UTC
Read the original article
Hit count: 158
django
|django-signals
Hi,
I'm having a hard time to grasp this post_save/pre_save signals from django.
What happens is that my model has a field called status
and when a entry to this model is added/saved, it's status must be changed accordingly with some condition.
My model looks like this:
class Ticket(models.Model):
(...)
status = models.CharField(max_length=1,choices=OFFERT_STATUS, default='O')
And my signal handler, configured for pre_save:
def ticket_handler(sender, **kwargs):
ticket = kwargs['instance']
(...)
if someOtherCondition:
ticket.status = 'C'
Now, what happens if I put aticket.save()
just bellow this last line if
statement is a huge iteration black hole, since this action calls the signal itself. And this problem happens in both pre_save
and post_save
.
Well... I guess that the capability of altering a entry before (or even after) saving it is pretty common in django's universe. So, what I'm doing wrong here? Is the Signals the wrong approach or I'm missing something else here?
Also, would it be possible to, once this pre_save/post_save function is triggered, to access another model's instance and change a specific row entry on that?
Thanks
© Stack Overflow or respective owner