It may be not so obvious at first that when you override save() in models to change something in a related object (ie via ForeignKey) you have to explicitly call save() on that related object.

Python [Show Plain Code]:
  1. class FirstObject(models.Model):
  2.    related_object = models.ForeignKey("SecondObject")
  3.    def save(self):
  4.       self.related_object.counter = self.related_object + 1
  5.       self.related_object.save()
  6.       super(FirstObject, self).save()
  7.  
  8. class SecondObject(models.Model):
  9.    counter = models.IntegerField(default=0)

Leave a Reply