0

in order to check if a field has changed, I added an attribute to my model, as explained here:

class Person(models.Model):
  name = models.CharField()

  __original_name = None

  def __init__(self, *args, **kwargs):
    super(Person, self).__init__(*args, **kwargs)
    self.__original_name = self.name

  def save(self, force_insert=False, force_update=False, *args, **kwargs):
    if self.name != self.__original_name:
      # name changed - do something here

    super(Person, self).save(force_insert, force_update, *args, **kwargs)
    self.__original_name = self.name

I already had instances of this model (without the __original_name attribute), and when I want to modify and save one, I get

'Person' object has no attribute '__original_name'

Anybody can help?

Community
  • 1
  • 1
jul
  • 36,404
  • 64
  • 191
  • 318

1 Answers1

0

The attribute can be accessed using self._Person__original_name.

jul
  • 36,404
  • 64
  • 191
  • 318