скажи, что у меня есть:
class LogModel(models.Model):
message = models.CharField(max_length=512)
class Assignment(models.Model):
someperson = models.ForeignKey(SomeOtherModel)
def save(self, *args, **kwargs):
super(Assignment, self).save()
old_person = #?????
LogModel(message="%s is no longer assigned to %s"%(old_person, self).save()
LogModel(message="%s is now assigned to %s"%(self.someperson, self).save()
Моя цель - сохранить в LogModel несколько сообщений о том, кому было назначено назначение. Обратите внимание, что мне нужно знать старое, предварительно сохраненное значение этого поля.
Я видел код, который предлагает перед super (). Save () извлечь экземпляр из базы данных через первичный ключ и получить оттуда старое значение. Это может сработать, но немного грязно.
Кроме того, я планирую в конечном итоге разделить этот код из метода .save () с помощью сигналов, а именно pre_save () и post_save (). Попытка использовать вышеупомянутую логику (извлечь из базы данных в pre_save, сделать запись в журнале в post_save), по-видимому, здесь терпит неудачу, так как pre_save и post_save - два отдельных метода. Возможно, в pre_save я смогу извлечь старое значение и вставить его в модель в качестве атрибута?
Мне было интересно, была ли для этого общая идиома. Благодаря.