Как получить() значение нечислового поля первичного ключа при сохранении модели
Я пытаюсь перехватить значение поля первичного ключа во время сохранения модели, используя:
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
значение ).
Как я могу этого добиться.