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