Как получить() значение нечислового поля первичного ключа при сохранении модели

Я пытаюсь перехватить значение поля первичного ключа во время сохранения модели, используя:

def save(self, *args, **kwargs):
    if self.pk:     # For some post processing, I am trying to catch the instance "ID", and make changes to fields
        cls = self.__class__
        old = cls.objects.get(pk=self.pk)   # Getting current model state. << Error occurs here 
        new = self                          # Newly instantiated model object with new values.

# ...
# ...

Это работает нормально, если у меня есть следующее определение модели ( первичный ключ как Integer):

class myModel(models.Model):
    some_fld_id = models.AutoField(primary_key=True, verbose_name='...

Однако, если я использую charField в качестве primary key следующим образом:

class myModel(models.Model):
    some_fld_id = models.CharField(primary_key=True, max_length=6, ...

Произошел сбой с ошибкой:

Модель, соответствующая запросу, не существует.

И указывает на линию с: old = cls.objects.get(pk=self.pk)

Теперь из-за некоторых ограничений я должен определить primary_key как charField ( и все еще быть в состоянии поймать pk значение ).

Как я могу этого добиться.

Вернуться на верх