В моем приложении Django пользователи взаимодействуют через серию веб-форм, и создается журнал. Например, журнал может выглядеть примерно так:
- Битва началась!
- Атакующий (Эльвер) использовал Вихрь. Это было супер эффективно!
- Защитник (Angeleyes) построил ров. Оборона + 5.
- Начался шторм. Атакующий (Элвер) пропускает ход.
Проблема в том, что этот журнал должен отображаться и на других языках. А если добавлен новый язык, предыдущие сообщения журнала также должны автоматически отображаться на новом языке.
Как вы можете видеть, существует несколько типов сообщений (событие без параметров, событие с параметрами, событие атаки, событие строительства и т. Д.)
Какова лучшая структура данных для их хранения, чтобы их можно было легко перевести на основе простых шаблонов?
Изначально я думал о том, чтобы построить отдельную модель для каждого события. Например класс AttackEvent (models.Model) с полями атакующий, заклинание, результат. Но они должны были бы вернуться к некоторой битве, чтобы было легко запрашивать их все и сортировать. Могут ли они все вернуться к этой битве, используя ForeignKey с тем же related_name? Вероятно, нет.
Другой вариант - иметь огромный класс GenericLogEvent, имеющий безумное количество параметров, большинство из которых пустые = True, null = True. и затем мы переключаемся на основе eventType.
Какой лучший способ здесь?