Django сохраняет переопределение только при обновлении чего-либо, кроме одного поля?

Я понимаю, что об этом уже спрашивали и отвечали, но мне кажется, что мой вопрос немного отличается от других, и я не смог найти на него ответ.

У меня есть модель с версией version, которую я хочу увеличивать на 1 каждый раз, когда объект обновляется/сохраняется. Но я хочу увеличивать версию только в том случае, если значения полей были изменены помимо программы. Другими словами, не следует увеличивать версию тренинга, если единственным изменением было добавление или удаление программы. Бывают случаи, когда программа изменяется вместе с другими полями, в этом случае версия должна увеличиваться.

models.py

class Training(BaseTeamModel): 
    title = models.CharField("Title",max_length=254)
    description = models.TextField("Description", blank=True)
    program = models.ManyToManyField(Program,related_name='programs')
    version = models.IntegerField(default=0)

    def save(self, *args, **kwargs):
        # How to increment the version only if fields were changed
        # other than program.
        self.version = self.version + 1
        super(Training, self).save(*args, **kwargs)

Я мог бы сравнивать каждое значение с предыдущим значением для каждого поля, но это не масштабируемо и приведет к запутанным моделям.

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