Django - Таблицеподобная форма для одновременного обновления отношений между несколькими объектами
Контекст
Допустим, у меня есть два Orders
(O1, O2
) и три Tasks
, которые могут быть выполнены несколько раз (T1, T2, T3
).
В таблице ниже показано, сколько повторений каждого задания было заказано:
Так, например, порядок O1
состоит из 2 повторений T1
и 8 повторений T2
.
У меня есть целый год, чтобы сделать эти повторения, но я хочу контролировать, сколько их было сделано в каждом месяце.
Скажем, вот повторения, которые я сделал:
so
- в сентябре я выполнил только 4 повторения задания 2 и назначил 1 на порядок 1 и 3 на порядок 3 .
- в октябре я сделал 2 повторения T1 для O1, 2 повторения T2 для O1 и 1 повторение T3 для O2 .
- и так далее в ноябре
В настоящее время я храню каждое из этих чисел во второй таблице как объект RepetitionLog
(с полями task, order, month и reps), который выглядит следующим образом:
class RepetitionLog(models.Model):
task = models.ForeignKey(Task, on_delete=models.CASCADE)
order = models.ForeignKey(Order, on_delete=models.CASCADE)
reps = models.DecimalField('Geleistete Wiederholungen', max_digits=9, decimal_places=2)
month = models.DateField('Monat')
Вопрос
Мой главный вопрос заключается в том, какой лучший способ создать интерактивную таблицу, подобную второй таблице выше, и использовать ее для создания/обновления нескольких объектов RepetitionLog одновременно?
Мне нужны строки для каждого объекта задачи, столбцы для каждой комбинации месяц-ордер, существующие повторения должны отображаться и быть изменяемыми, и пользователь должен иметь возможность ввести что-то в пустую ячейку (создавая новый объект RepetitionLog в фоновом режиме)
Я совсем новичок в Django, и до сих пор я играл только с простыми формами для обновления одного объекта из одной модели и следовал этому руководству https://dev.to/zxenia/django-inline-formsets-with-class-based-views-and-crispy-forms-14o6 для достижения чего-то похожего на инлайны, которые мы можем иметь в админке.
Для этого случая использования я действительно хотел бы иметь этот табличный интерфейс, а не заставлять пользователя создавать/редактировать кучу RepetitionLog отдельно, но я понятия не имею, с чего начать, и не смог найти ни одного похожего примера, поэтому буду очень признателен за помощь.