Django - Таблицеподобная форма для одновременного обновления отношений между несколькими объектами

Контекст

Допустим, у меня есть два Orders (O1, O2) и три Tasks, которые могут быть выполнены несколько раз (T1, T2, T3).

В таблице ниже показано, сколько повторений каждого задания было заказано:

![enter image description here

Так, например, порядок O1 состоит из 2 повторений T1 и 8 повторений T2.

У меня есть целый год, чтобы сделать эти повторения, но я хочу контролировать, сколько их было сделано в каждом месяце.

Скажем, вот повторения, которые я сделал:

enter image description here

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 отдельно, но я понятия не имею, с чего начать, и не смог найти ни одного похожего примера, поэтому буду очень признателен за помощь.

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