Django: как добавить поля в форму в html и сохранить ее?

У меня есть форма с различными полями и одним полем TextInput с именем 'directions'. Пользователь может добавлять дополнительные поля направлений с помощью кнопки (просто клонируя существующее с помощью javascript). Но когда я пытаюсь сохранить его в базу данных, сохраняется только последнее. Если я выведу request.POST, то там будет список с именем 'directions': ['first direction', 'second', 'and so on...'], так что данные есть, но они почему-то усекаются после валидации. Я также попробовал заменить поле на пользовательское MultiValueField, начиная с одного CharField и добавляя дополнительные с помощью javascript, как это:

<input type="text" name="directions_0" required="" id="id_directions_0">
<input type="text" name="directions_1" required="" id="id_directions_1">

но результат тот же

models.py:

class Recipe(models.Model):
    title = models.CharField(max_length=255)
    directions = models.CharField(max_length=512)

class Ingredient(models.Model):
    name = models.CharField(max_length=127)
    recipe = models.ForeignKey(Recipe, on_delete=models.CASCADE, related_name='ingredients')

forms.py:

class RecipeForm(forms.ModelForm):
    class Meta:
        model = Recipe
        fields = '__all__'

class IngredientForm(forms.ModelForm):
    class Meta:
        model = Ingredient
        exclude = ('recipe', )


IngredientFormSet = forms.inlineformset_factory(Recipe, Ingredient, form=IngredientForm)

views.py:

class RecipeCreateView(CreateView):
    form_class = RecipeForm
    template_name = 'recipes/recipe_new.html'
    success_url = reverse_lazy('recipe_list')

    def get_context_data(self, **kwargs):
        context = super(RecipeCreateView, self).get_context_data(**kwargs)
        if self.request.POST:
            context['formset'] = IngredientFormSet(self.request.POST)
        else:
            context['formset'] = IngredientFormSet()
        return context

    def form_valid(self, form):
        context = self.get_context_data()
        ingredient_formset = context['formset']
        if ingredient_formset.is_valid():
            self.object = form.save()
            ingredient_formset.instance = self.object
            ingredient_formset.save()
            return super(RecipeCreateView, self).form_valid(form)
        else:
           return super(RecipeCreateView, self).form_invalid(form)

я хотел сохранить его как строку с разделителем, что-то вроде: "direction 1|direction 2|..." и затем отобразить его как список в DetailView.

или я должен создать другую модель для направлений и сделать наборы форм, как с ингредиентами? Но при этом должна быть возможность добавить другие поля в форму и сохранить ее?

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