KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
How do I have actions occur when a field gets changed in one of my models? In this particular case, I have this model: class Game(models.Model): STATE_CHOICES = ( ('S', 'Setup'), ('A', 'Active'), ('P', 'Paused'), ('F', 'Finished') ) name = models.CharField(max_length=100) owner = models.ForeignKey(User) created = models.DateTimeField(auto_now_add=True) started = models.DateTimeField(null=True) state = models.CharField(max_length=1, choices=STATE_CHOICES, default='S') and I would like to have Units created, and the 'started' field populated with the current datetime (among other things), when the state goes from Setup to Active. I suspect that a model instance method is needed, but the docs don't seem to have much to say about using them in this manner. Update: I've added the following to my Game class: def __init__(self, *args, **kwargs): super(Game, self).__init__(*args, **kwargs) self.old_state = self.state def save(self, force_insert=False, force_update=False): if self.old_state == 'S' and self.state == 'A': self.started = datetime.datetime.now() super(Game, self).save(force_insert, force_update) self.old_state = self.state
Tags (comma-separated)
Save Edits
Cancel