code_junkie

In Django how do I notify a parent when a child is saved in a foreign key relationship?

Nov 11th, 2011
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.22 KB | None | 0 0
  1. class Activity(models.Model):
  2. name = models.CharField(max_length=50, help_text='Some help.')
  3. entity = models.ForeignKey(CancellationEntity)
  4. ...
  5.  
  6.  
  7. class Cancellation(models.Model):
  8. activity = models.ForeignKey(Activity)
  9. date = models.DateField(default=datetime.now().date())
  10. description = models.CharField(max_length=250)
  11. ...
  12.  
  13. from django.db.models.signals import post_save
  14.  
  15. class Activity(models.Model):
  16. name = models.CharField(max_length=50, help_text='Some help.')
  17. entity = models.ForeignKey(CancellationEntity)
  18.  
  19. @classmethod
  20. def cancellation_occurred (sender, instance, created, raw):
  21. # grab the current instance of Activity
  22. self = instance.activity_set.all()[0]
  23. # do something
  24. ...
  25.  
  26.  
  27. class Cancellation(models.Model):
  28. activity = models.ForeignKey(Activity)
  29. date = models.DateField(default=datetime.now().date())
  30. description = models.CharField(max_length=250)
  31. ...
  32.  
  33. post_save.connect(Activity.cancellation_occurred, sender=Cancellation)
  34.  
  35. class Cancellation( models.Model ):
  36. blah
  37. blah
  38. def save( self, **kw ):
  39. for a in self.activity_set.all():
  40. a.somethingChanged( self )
  41. super( Cancellation, self ).save( **kw )
Add Comment
Please, Sign In to add comment