У меня есть таблица пользователей, которым разрешено редактировать одну из коллекции других таблиц (каждая из которых имеет поле last_modified для указания времени последнего изменения). У меня есть другая таблица, которая отслеживает каждое изменение по мере его внесения (у меня есть лучший способ отслеживать историю / управление версиями, но это больше предназначено для публикации пользователю обновляемого списка обновлений)
class WhatsNew(models.Model):
author = models.ForeignKey(User)
model_update = models.CharField("Database Table", max_length=100)
object_id = models.IntegerField("Object ID")
object_name = models.CharField("Object Name", max_length=100)
changed = models.TextField("Fields Updated", blank=True, null=True)
pub_date = models.DateTimeField("Date/Time of Update", auto_now_add=True)
Я хочу, чтобы пользователь мог видеть все сделанные им изменения. Я бы сделал это, запросив приведенную выше таблицу, отфильтровав автора. Но кроме того, я хочу, чтобы пользователь увидел список внесенных им изменений, сгруппированных по идентификатору. Так, например, если пользователь 12345 отредактировал объект 2-1, затем 3-2, затем снова 2-1, затем 4-4, я хочу, чтобы пользователь мог видеть список (2-1, 3-2, 4-4), время, когда они модифицировали объект, и время, когда объект был изменен кем-либо.
Должен ли я собрать все эти данные в отдельную таблицу или попытаться запросить их из таблицы WhatsNew? Я думаю, что я должен записать его в новую таблицу, чтобы избежать, возможно, дорогостоящего запроса, но я не хочу дублировать информацию, которая уже доступна в базе данных.