Джанго Вложенные Встроенные Формсеты [закрыто]

Я пытаюсь решить проблему, но понятия не имею, как ее решить. Мне нужна помощь :-)

У меня есть модель иерархии, как это:

class Task(models.Model):
    name = models.CharField(max_length=255)
    number_of_steps = models.IntegerField()

class StepGroup(models.Model):
    task = models.ForeignKey(Task)
    init_date = models.DateField()

class Step(models.Model):
    group = models.ForeignKey(StepGroup)
    name = models.CharField(max_length=255)

Я должен написать диалог, в котором я создаю несколько групп шагов. InlineFormSet выглядит правильным путем, но поскольку существует два уровня вложенности, я не знаю, как это сделать.

Кроме того, мне нужны обычные вещи с формами: контроль ошибок (form.name_of_field.errors), автопопуляция при редактировании Задачи и т. Д., Поэтому делать это вручную с помощью javascript и обработки запроса POST на стороне сервера будет слишком сложно и склонный.

Вот как мне нужна форма (количество шагов в каждой группе задается полем «number_of_steps» в модели задач):

+-----------------------------------+
| STEP GROUP 1                      |
|                                   |
| Init date: _____________          |
|                                   |
| Step 1: ________________          |
| Step 2: ________________          |
| Step 3: ________________          |
|                                   |
+-----------------------------------+
| STEP GROUP 2                      |
|                                   |
| Init date: _____________          |
|                                   |
| Step 1: ________________          |
| Step 2: ________________          |
| Step 3: ________________          |
|                                   |
+-----------------------------------+
|                                   |
|             +-------------------+ |
|             | Create step group | |
|             +-------------------+ |
+-----------------------------------+

Пожалуйста, любая помощь, предложение или ссылка будут очень благодарны.

Ответы на вопрос(0)

Ваш ответ на вопрос